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

fileinputモジュールを見てください

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 コマンドは 2 つの入力ファイルを連結し、Python プログラムは stdin から読み取るだけで、それらを 1 つの大きなファイルのように扱うことができます。

于 2013-09-28T21:51:28.597 に答える