我正在尝试使用 argparse 来处理我的应用程序的命令行参数,但是我在使用 gstreamer(我的应用程序使用的)时遇到了一些问题。当我为我的应用程序提供 -h 选项时,它没有显示我为我的程序参数定义的帮助消息,而是显示了一个奇怪的 gstreamer 帮助消息,省略了我的参数的帮助。
我的代码中有以下解析器定义:
parser = argparse.ArgumentParser()
parser.add_argument("-c", "--capture", help="Specifies the capture device.\n 0 - Webcam \n 1 - Kinect", type=int, choices=[0, 1], default=0)
parser.add_argument("-i", "--interval", help="Specifies the capture interval in seconds when the auto-capture is on", type=int, choices=[4, 5, 6, 7, 8], default=4)
args = parser.parse_args()
当我使用 -h 启动我的程序时得到的消息是(我的语言环境是巴西-葡萄牙语,但足以看到帮助消息的一般结构以及我的可选参数缺乏帮助)
Uso:
FasTracker.py [OPÇÃO...] - GStreamer initialization
Opções de ajuda:
-h, --help Exibe opções de ajuda
--help-all Exibe todas as opções de ajuda
--help-gst Exibir opções do GStreamer
我是不是做错了什么,或者有什么方法可以抑制 Gstreamer 的帮助信息吗?
提前致谢
最佳答案
我也遇到了同样的问题。我正在使用 ubuntu 10.10 + python 2.6 + python-gst0.10 包。
最后我找到了错误:import gst
before parser.parse_args()
modifies sys
。要重现,请将以下代码放入 main.py
:
if __name__=='__main__':
import argparse, sys
pparser = argparse.ArgumentParser(description='my program')
pparser.add_argument('--plot', action='store_true', default=False, help="Show a plot")
pparser.add_argument('--log', action='store_true', default=False, help="Write log output")
pparser.add_argument('filename', action='store', type=str)
import gst
args = pparser.parse_args(sys.argv[1:])
并运行 python main.py -h
。这会产生以下错误输出:
Usage:
main.py [OPTION...] - GStreamer initialization
Help Options:
-h, --help Show help options
--help-all Show all help options
--help-gst Show GStreamer Options
如果我们删除import gst
(或将语句移到parse_args
之后),那么输出是正确的:
usage: main.py [-h] [--plot] [--log] filename
my program
positional arguments:
filename
optional arguments:
-h, --help show this help message and exit
--plot Show a plot
--log Write log output
关于python - gstreamer 帮助消息覆盖我的 argparse 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12059806/