Python argparse可以从文件中获取输入吗?

时间:2016-02-09 13:09:29

标签: python

我的Python脚本可以从文件中获取其参数,而不是命令行吗?我不介意在命令行上传递包含参数的文件。

我正在使用argparse

原因是我有一个非常复杂的参数列表。我想我可以将调用包装在一个批处理文件或另一个Python脚本中,但我想知道这是否可行,并且认为我会问,也许可以学到一些东西。

因此,我可以

而不是myScript.py --arg_1=xxx --arg2_=xxx ... --arg_n=xxx

myScript.py --file args.txt其中args.txt包含

--arg_1=xxx 
--arg_2=xxx 
... 
--arg_n=xxx

2 个答案:

答案 0 :(得分:4)

您可以告诉解析器,以某些字符开头的参数实际上是包含更多参数的文件的名称。来自documentation

>>> with open('args.txt', 'w') as fp:
...    fp.write('-f\nbar')
>>> parser = argparse.ArgumentParser(fromfile_prefix_chars='@')
>>> parser.add_argument('-f')
>>> parser.parse_args(['-f', 'foo', '@args.txt'])
Namespace(f='bar')

解析器从args.txt读取,并将每一行视为单独的参数。

答案 1 :(得分:1)

您可以通过将命令行参数作为文件名然后打开它来执行此操作。 像

file_name=sys.argv[1]
f=open(file_name)
arguments= f.read()
user_input=arguments.split()
user_argument=[]
for i in range():
    user_argument.append(user_input[i])

您可以在此处获取列表user_argument中的用户参数列表。 Perheps你会得到你想要的!