在Python中按多行字符串作为命令行输入
在编程比赛中,我会得到一个初始化文件,从中读取初始参数。不过,有时候这些参数会分散在不同的行上,像这样:
x
a
b
(这些参数都是整数)
现在当我读取第一行时,我想我会这样存储 x
:
x = int(sys.argv[1])
那么我该如何处理其他行呢?使用 sys.argv[2]
能否让我得到第二行的下一个参数?
更准确地说,使用:
par_list = sys.argv[1:].split(" ")
能否让我得到所有行的参数列表?
2 个回答
3
我假设你是在命令行中把输入文件名传给这个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
的所有数据行。
4
这个方法可以解决问题:
>> 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]