在Python中将多行字符串作为命令行输入

时间:2014-06-28 17:35:50

标签: python command-line-arguments argv

在编码竞赛中,我提供了一个初始化文件,可以从中读取初始参数。但是,有时参数分布在不同的行上,如下所示:

x
a 
b

(所有这些整数)

现在当我读到line1时,我相信我会像这样存储x

x = int(sys.argv[1])

我如何照顾其他线路? sys.argv[2]会给我第2行的下一个参数吗?

更确切地说,将使用:

par_list = sys.argv[1:].split(" ") 

给我一​​个所有行的参数列表?

2 个答案:

答案 0 :(得分:2)

我假设您将输入文件名传递给cmdline中的python脚本。

python script.py input.txt

在这种情况下,sys.argv[1] = 'input.txt'将访问输入文件的内容:

with open(sys.argv[1], 'r') as f:
    lines = f.readlines()

现在,lines是一个包含input.txt所有数据行的列表。

答案 1 :(得分:2)

这样可以解决问题:

>> python program.py $(cat input.txt)

示例程序:

import sys
paras = [int(x) for x in sys.argv[1:]]
print(paras)

示例输入文件:

42
-1
100

输出:

>> python program.py $(cat input.txt)
[42, -1, 100]