2016-02-09 31 views
-1

我的Python腳本可以從文件而不是命令行獲取其參數嗎?我不介意在命令行中傳遞包含參數的文件。我正在使用argparsePython可以從文件中獲取輸入嗎?

原因是我有一個非常複雜的參數列表。我想我可以把這個調用包裝在一個批處理文件或另一個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

你應該看看[configparser](https://docs.python.org/3/library/configparser.html)。如果你使用的是Python2,[ConfigParser](https://docs.python.org/2/library/configparser.html) – zondo

回答

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

你可以通過命令行參數作爲文件名然後打開它來做到這一點。 像

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你會得到你想要的!

相關問題