我正在尝试使用argparse在Python中提供输入文件作为参数,但是不知何故,我收到了错误消息。
这是我的代码:
from argparse import ArgumentParser
def main():
args = arg_parser.parse_args()
print('in main, args = ',args)
input_file = args.input_file
update_file_input(input_file)
if __name__ == '__main__':
import argparse
parser = argparse.ArgumentParser(description="less script")
parser.add_argument('--input_file', required=True, help="input file containing IDs and attributes to change (csv)")
args = parser.parse_args()
print('args is: ',args)
main()
我正在从命令行使用以下命令调用脚本:
python updaterScript.py --input_file myCSVFile.csv
我在这里做错了什么?为什么会出现错误?
这是错误:
Traceback (most recent call last):
File "/home/ProjectP/runtime/bin/updaterScript.py", line 11, in <module>
load_entry_point('ProjectP==1.0', 'console_scripts', 'updaterScript.py')()
File "/home/ProjectP/runtime/lib/python3.6/site-packages/ProjectP/updaterScript.py", line 10
0, in main
args = arg_parser.parse_args()
NameError:名称'arg_parser'未定义
答案 0 :(得分:0)
嗯,您的args实际上是arg_parser.parse_args()尚未定义。您要导入arg_parser还是从某处获得arg_parser? 您可以调试并查看arg_parser.parse_args()返回什么吗?
答案 1 :(得分:0)
根据您的代码,不会识别arg_parse是没有逻辑原因的。 您不会在(看到的)代码的任何时候导入它或对其进行初始化。 我不明白你在做什么。 您从哪里想到arg_parse?
答案 2 :(得分:0)
无需在两个地方致电parse_args()
。调用一次,然后将结果作为参数传递到main()
。
def main(args):
print('in main, args = ',args)
input_file = args.input_file
update_file_input(input_file)
if __name__ == '__main__':
import argparse
parser = argparse.ArgumentParser(description="less script")
parser.add_argument('--input_file', required=True, help="input file containing IDs and attributes to change (csv)")
args = parser.parse_args()
print('args is: ',args)
main(args)
我没有理由看到在main()
和if
块之间拆分代码。我将所有内容都放在一个位置,然后将import
移动到文件顶部。
import argparse
def main():
parser = argparse.ArgumentParser(description="less script")
parser.add_argument('--input_file', required=True, help="input file containing IDs and attributes to change (csv)")
args = parser.parse_args()
print('args is: ',args)
input_file = args.input_file
update_file_input(input_file)
if __name__ == '__main__':
main()