0

いくつかの python ファイルを、さまざまな設定とさまざまなファイル名で何度も実行する必要があります。

これが私がしなければならないタスクの例です。これは Linux 用ですが、Windows でも同じことを行う必要があります。Python を呼び出し元として使用し、STD I/O で動作するように既に設定されている他の Python スクリプトを実行する方法はありますか? Pythonにはこのようなシェルがありますか? 私は、Linux と Windows の両方でバッチ コードを維持することに切り替えるよりも、むしろこれを実行したいと考えています。

#!/bin/bash
#run scripts to generate and manipulate data

for ((i=1; i<=3 ; i++))
do
    randfuncgen.py -k 12 > randomvalues_$i.fitdata
    probe.py -k 12 < randomvalues_$i.fitdata > randomvalues_$i.walshdata
    std.py -m s < randomvalue_$i.walshdata > randomvalues_separate_std_$i.walshdata
    std.py -m a < randomvalue_$i.walshdata > randomvalues_all_std_$i.walshdata
done
4

2 に答える 2

0

各プログラム (randfuncgen.py、probe.py、std.py) は、sys.stdout.write('your output') による出力と、sys.stdin による入力をサポートする必要があります。

subprocess モジュールに関するドキュメントと、「シェル パイプラインの置き換え」に関する関連セクションを参照できます。

たとえば、次のようになります。

import subprocess as sp
for counter in range(1,4):
    p1 = sp.Popen(['randfuncgen.py','-k','12',], stout=sp.PIPE)
    p2 = sp.Popen(['probe.py', '-k', '12'], stdin=p1.stdout, stdout=PIPE)
    p3 = sp.Popen(['std.py', '-m', 's'], stdin=p2.stdout, stdout='randomvalues_separate_std_%d.walshdata'%counter)
    p4 = sp.Popen(['std.py', '-m', 'a'], stdin=p2.stdout, stdout='randomvalues_all_std_%d.walshdata'%counter)

p4が実行される前にパイプが使い果たされているかどうかわからないので、p2からの出力をファイルとして行う必要があるかもしれません

于 2013-11-05T19:08:44.170 に答える