我想使用管道将数据传递给Python文件,并指定输入文件,如:
cat file.txt|python script.py -u configuration.txt
我目前有这个:
for line in fileinput.input(mode='rU'):
print(line)
我知道sys.argv可以有一些东西但是可能使用fileinput有一个干净的方法吗?
感谢。
答案 0 :(得分:1)
如果文件名是
'-'
,则它也会被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
模块。