0

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

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

3 回答 3

5

看看文件输入模块

import fileinput
for line in fileinput.input():
    process(line)

这会遍历 sys.argv[1:] 中列出的所有文件的行,如果列表为空,则默认为 sys.stdin。如果文件名是“-”,它也被 sys.stdin 替换。要指定文件名的替代列表,请将其作为第一个参数传递给 input()。也允许使用单个文件名。

于 2013-09-28T21:52:05.797 回答
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 无关,而与您的外壳有关。您只是将标准输入/输出重定向到文件。如果你想实现这一点:

cat input1.txt input2.txt | python subprogram.py > out.txt
于 2013-09-28T21:51:16.737 回答
2

让您的外壳为您完成工作:

cat input_1.txt input_2.txt | python program.py > out.text

cat 命令会将两个输入文件连接在一起,您的 python 程序可以从标准输入中读取并将它们视为一个大文件。

于 2013-09-28T21:51:28.597 回答