如何在Python中给输入文件作为参数来读取它?

时间:2019-05-08 11:40:33

标签: python command-line-arguments

我正在尝试使用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'未定义

3 个答案:

答案 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()