参数解析。名为 "args" 的变量的有趣问题
Argparse. Funny issue with variable named "args"
我注意到我的一个脚本不是 运行 因为 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
的变量有关。我无法从该变量中检索任何信息,因为它总是 return 是空的。
如果我将 args
变量的名称更改为其他任何名称,则脚本可以正常工作。
我问这个问题是因为我找不到任何信息告诉我 args
是一个关键字,或者其他任何东西。
我将我的脚本调用为:
python3 plotter.py --fix $(pwd)/fix.txt $(pwd) $(pwd)/plot.png
这是该有趣行为的屏幕截图:
请注意包含单词 args
的任何语句如何不 return。
对这里可能发生的事情有什么想法吗?
尝试使用 vars()
args = vars(parser.parse_args())
然后使用
检索
some_val = args['some']
也参考这个Whosebug post
ipdb/__main__.py
在其 main
中设置 args
:
def main():
...
opts, args = getopt.getopt(sys.argv[1:], 'hc:', ['--help', '--command='])
我不知道 运行 交互时可见的内容,但我怀疑它自己对 args
的使用会干扰您使用
看到的内容
args = parser.parse_args(...)
在测试argparse
的时候,我例行加了一个
print(args)
声明。或者我在 ipython
会话中测试它,我可以在其中查看 parse_args
的结果而无需进一步工作。
您可以通过在变量名前加上感叹号来引用 args
变量名:
ipdb> !args
args
其实是ipdb
使用的命令,见here:
解释:
a(rgs)
Print the argument list of the current function.
我注意到我的一个脚本不是 运行 因为 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
的变量有关。我无法从该变量中检索任何信息,因为它总是 return 是空的。
如果我将 args
变量的名称更改为其他任何名称,则脚本可以正常工作。
我问这个问题是因为我找不到任何信息告诉我 args
是一个关键字,或者其他任何东西。
我将我的脚本调用为:
python3 plotter.py --fix $(pwd)/fix.txt $(pwd) $(pwd)/plot.png
这是该有趣行为的屏幕截图:
请注意包含单词 args
的任何语句如何不 return。
对这里可能发生的事情有什么想法吗?
尝试使用 vars()
args = vars(parser.parse_args())
然后使用
检索some_val = args['some']
也参考这个Whosebug post
ipdb/__main__.py
在其 main
中设置 args
:
def main():
...
opts, args = getopt.getopt(sys.argv[1:], 'hc:', ['--help', '--command='])
我不知道 运行 交互时可见的内容,但我怀疑它自己对 args
的使用会干扰您使用
args = parser.parse_args(...)
在测试argparse
的时候,我例行加了一个
print(args)
声明。或者我在 ipython
会话中测试它,我可以在其中查看 parse_args
的结果而无需进一步工作。
您可以通过在变量名前加上感叹号来引用 args
变量名:
ipdb> !args
args
其实是ipdb
使用的命令,见here:
解释:
a(rgs)
Print the argument list of the current function.