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

4 投票
2 回答
4578 浏览
提问于 2025-04-18 11:26

在编程比赛中,我会得到一个初始化文件,从中读取初始参数。不过,有时候这些参数会分散在不同的行上,像这样:

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]

撰写回答