我注意到我的一个脚本没有运行,因为argparse解析器无法parse_args()。
if __name__ == "__main__":
import argparse
parser = argparse.ArgumentParser(description="Save a plot to file")
parser.add_argument('input_directory', metavar='i', type=str, default='.',
help='The input directory')
parser.add_argument('output_file', metavar='o', type=str,
help='The output filename')
parser.add_argument('--fix', type=str, default=None,
help='If FIX, the txt containing fix classification results')
args = parser.parse_args()
import ipdb; ipdb.set_trace()
奇怪的是,我注意到问题与名为args
的变量有关。我无法从该变量中检索任何信息,因为它始终返回空。
如果我将args
变量的名称更改为其他任何内容,则脚本可以正常工作。
我问的是这个问题,因为我找不到任何告诉我args
是关键字或其他内容的信息。
我调用了我的脚本:
python3 plotter.py --fix $(pwd)/fix.txt $(pwd) $(pwd)/plot.png
以下是有趣行为的屏幕截图:
请注意包含单词args
的任何语句不会返回。
关于这里可能发生什么的任何想法?
答案 0 :(得分:1)
ipdb/__main__.py
在其args
:
main
def main():
...
opts, args = getopt.getopt(sys.argv[1:], 'hc:', ['--help', '--command='])
我不知道交互式运行时可见的是什么,但我怀疑自己使用args
会干扰你所看到的内容
args = parser.parse_args(...)
在测试argparse
时,我会定期添加
print(args)
语句。或者我在ipython
会话中对其进行测试,在那里我可以查看parse_args
的结果而无需进一步的工作。
答案 1 :(得分:0)
尝试使用vars()
args = vars(parser.parse_args())
然后使用
进行检索some_val = args['some']
另请参阅此stackoverflow post