我有一个输入文件的程序:
python subprogram.py < input.txt > out.txt
如果我有许多输入文件,如何在这些输入上运行单个python程序并生成单个输出?我相信程序应该像:
python program.py < input_1.txt input_2.txt > out.txt
程序本身应该看起来像:
from subprogram import MyClass
import sys
if __name__ == '__main__':
myclass = MyClass()
myclass.run()
答案 0 :(得分:5)
查看fileinput模块
import fileinput
for line in fileinput.input():
process(line)
这将遍历sys.argv [1:]中列出的所有文件的行,如果列表为空,则默认为sys.stdin。如果文件名是' - ',它也会被sys.stdin替换。要指定备用文件名列表,请将其作为input()的第一个参数传递。也允许使用单个文件名。
答案 1 :(得分:3)
让程序接受命令行参数:
python program.py input_1.txt input_2.txt > out.txt
您可以像以下一样访问它们:
from subprogram import MyClass
import sys
if __name__ == '__main__':
class = MyClass()
class.run(sys.argv)
你使用的方式不是关于Python,而是关于你的shell。您只是将标准输入/输出重定向到文件。如果你想实现这个目标:
cat input1.txt input2.txt | python subprogram.py > out.txt
答案 2 :(得分:2)
让你的shell为你工作:
cat input_1.txt input_2.txt | python program.py > out.text
cat命令会将两个输入文件连接在一起,你的python程序只能从stdin中读取并将它们视为一个大文件。