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

Posted

技术标签:

【中文标题】在 Python 中将多行字符串作为命令行输入【英文标题】:Taking multiple lines of strings as command line input in Python 【发布时间】:2014-08-19 14:21:28 【问题描述】:

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

x
a 
b

(都是整数)

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

x = int(sys.argv[1])

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

更准确地说,将使用:

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

给我所有行的参数列表?

【问题讨论】:

【参考方案1】:

我假设您在 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 的所有数据行。

【讨论】:

是的,这似乎就是我想要的。谢谢!【参考方案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]

【讨论】:

这只适用于unix环境,不适用于windows系统。 @arvindch 的答案应该是被接受的。

以上是关于在 Python 中将多行字符串作为命令行输入的主要内容,如果未能解决你的问题,请参考以下文章

关于在Hive中将特定字符分隔的字符串拆分成多行的应用

文件路径作为命令行参数

如何使用python 执行命令行传入的代码

Python 命令行参数字符串以 '-' 开头

我可以在 Apache Pig Latin 中将命令拆分为多行吗?

Python 将多个字符串传递给单个命令行参数