来自文件的python脚本命令行参数

时间:2015-02-09 22:07:21

标签: python python-2.7 python-3.x

test.txt

port = 1234

host = abc.com

test.py

port = sys.argv[1]

host = sys.argv[2]

我想提供test.txt作为python脚本的输入:

python test.py test.txt

这样,文本文件中的端口和主机值应该作为命令行参数传递给python脚本,这些脚本会在脚本中传递给端口和主机。

如果我这样做:

python test.py 1234 abc.com

参数传递给sys.argv [1]和sys.argv [2]

我希望使用从txt文件中读取来实现。

感谢。

3 个答案:

答案 0 :(得分:6)

给定带有节标题的test.txt文件:

[settings]
port = 1234
host = abc.com

您可以使用ConfigParser库来获取主机和端口内容:

import sys
import ConfigParser

if __name__ == '__main__':
    config = ConfigParser.ConfigParser()
    config.read(sys.argv[1])
    print config['settings']['host']
    print config['settings']['port']

在Python 3中,它被称为configparser(小写)。

答案 1 :(得分:1)

在Linux中这样做的方法是:

 awk '{print $3}' test.txt | xargs python test.py

您的.txt文件可以分为3列,其中第3列包含端口和主机的值。 awk '{print $3}'提取这些列,xargs将它们作为输入参数提供给您的python脚本。

当然,只有当您不想修改.py脚本来读取文件并提取这些输入值时才会这样。

答案 2 :(得分:0)

我只想把文本文件写成:

1234
abc.com

然后你可以这样做:

input_file = open(sys.argv[1])
port = int(input_file.readLine())
host = input_file.readLine()