如何编写一个在输入文件列表上运行的python脚本?

时间:2013-09-28 21:46:09

标签: python class parsing input import

我有一个输入文件的程序:

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()

3 个答案:

答案 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中读取并将它们视为一个大文件。