コマンドラインでpythonファイルを実行している場合、次のように入力できます。
python filename.py < filename.in > filename.out
PyCharmでこの動作を模倣する方法はありますか?
StringIO
を使用してコンテンツをstdinにロードできます
import StringIO
sys.stdin = StringIO.StringIO('your input')
したがって、ファイルから入力をリダイレクトしたい場合は、ファイルからデータを読み取り、標準入力にロードできます
import StringIO
input = "".join(open("input_file", "r").readlines())
sys.stdin = StringIO.StringIO(input)
ファイル名を最初のシステム引数として使用する場合
import StringIO
filename = sys.argv[1]
input = "".join(open("input_file", "r").readlines())
sys.stdin = StringIO.StringIO(input)
スクリーンショット:
メインプログラム
デバッグ構成
以下のサンプルコードと同様のアイデア
import sys
sys.stdout = open(outputFile, mode='w', buffering=0)
#skip 'buffering' if you don't want the output to be flushed right away after written
入力に関しては、スペースで区切られた入力パラメーターをScript parameters
の下のフィールドRun->Edit Configurations
。ラップされたモジュールの出力をファイルに書き込むことだけを目的とするラッパークラスを使用している場合を除き、pyCharmで出力をファイルにリダイレクトする直接的な方法はありません。
PyCharm 5(または以前のバージョン)では、[構成の編集]ウィンドウでスクリプトパラメーターを変更することでこれを行うことができます。そのボックスに、
< filename.in
> filename.out
別の行に
pythonファイルに読み込みコードを入れることができなかったので、私のための解決策は次のとおりでした:
ファイルを作成launcher.sh
コンテンツあり:
python filename.py < filename.in > filename.out
PyCharmでbash構成を作成します:Run -> Edit Configurations -> + Bash
そして、置きます launcher.sh
をスクリプト名として