将管道数据传递给Python程序以及输入文件

时间:2017-01-10 03:38:08

标签: python file-io

我想使用管道将数据传递给Python文件,并指定输入文件,如:

cat file.txt|python script.py -u configuration.txt

我目前有这个:

for line in fileinput.input(mode='rU'):
    print(line)

我知道sys.argv可以有一些东西但是可能使用fileinput有一个干净的方法吗?

感谢。

1 个答案:

答案 0 :(得分:1)

来自the documentation

  

如果文件名是'-',则它也会被sys.stdin替换。要指定文件名的备用列表,请将其作为第一个参数传递给input()

因此,您可以创建包含'-'的列表以及sys.argv[1:]的内容(默认值),并将其传递给input()。或者只是将-放在Python程序的参数列表中:

cat file.txt|python script.py -u - configuration.txt

cat file.txt|python script.py -u configuration.txt -

取决于您是否希望在configuration.txt的内容之前或之后处理标准输入上提供的数据。

如果你想做一些比处理标准输入内容更复杂的事情,就好像它是一个输入文件一样,你可能不应该使用fileinput模块。