pythonでスクリプトを作成しました。これは、いくつかのファイルを取り、いくつかのテストを実行し、それぞれの情報を含む新しいファイルを作成しながらtotal_bugsの数をカウントします(bugs + more)。
現在の作業ディレクトリからいくつかのファイルを取得するには:
myscript.py -i input_name1 input_name2
その仕事が終わったら、スクリプトに「total_bugs」を返すようにしたいと思いますが、これを実装する最善の方法はわかりません。
現在、スクリプトは次のようなものを出力します。
[working directory]
[files being opened]
[completed work for file a + num_of_bugs_for_a]
[completed work for file b + num_of_bugs_for_b]
...
[work complete]
ここで少し助けてください(注/ヒント/コード例)。
ところで、これはWindowsとUNIXで動作する必要があります。
スクリプトをreturn valuesにしたい場合は、コードをラップする関数からreturn [1,2,3]
を実行するだけですが、その情報を使用するには別のスクリプトからスクリプトをインポートする必要があります:
(繰り返しますが、これは別のPythonスクリプトによって実行され、インポートするためにインポートする必要があります):
import ...
def main():
# calculate stuff
return [1,2,3]
(これは一般的に、ガバナーに何が間違っているか、または単にバグ/行のカウント数またはw/eを示す場合に適しています。通常は0が適切な終了であり、> = 1が不適切な終了です。 -データを取得したい方法でそれらを評価します)
import sys
# calculate and stuff
sys.exit(100)
そして、ガバナーに伝えたい内容に応じて、特定の終了コードで終了します。スケジューリングおよび監視環境でスクリプトを実行するときに、何が起こったかを示すために終了コードを使用しました。
そうでない場合は、stdoutを使用して外の世界と通信する必要があります(説明したように)。しかし、スクリプトを実行するパーサーであり、レポートしているものをすべてキャッチできない限り、それは一般に悪い考えです。
import sys
# calculate stuff
sys.stdout.write('Bugs: 5|Other: 10\n')
sys.stdout.flush()
sys.exit(0)
制御されたスケジューリング環境でスクリプトを実行している場合、終了コードが最適な方法です。
また、単に情報をファイルに書き込み、そこに結果を保存するオプションもあります。
# calculate
with open('finish.txt', 'wb') as fh:
fh.write(str(5)+'\n')
そしてそこから値/結果を取得します。他の人が簡単に読めるように、CSV形式で行うこともできます。