web-dev-qa-db-ja.com

コマンドラインで行うように、PyCharmで入力と出力をリダイレクトするにはどうすればよいですか?

コマンドラインでpythonファイルを実行している場合、次のように入力できます。

python filename.py < filename.in > filename.out

PyCharmでこの動作を模倣する方法はありますか?

26
Sophie

(Pycharm 5で追加)

の中に Edit Configurations画面のLogsタブの下で、オプションを確認してください:Save console output to fileFULL PATHを出力ファイルに提供します。それだけです-魔法のように動作します

enter image description here

27
yossico

入力ファイルをstdinにリダイレクトする

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)

スクリーンショット:

メインプログラム 

デバッグ構成 

Stdoutを出力ファイルにリダイレクトする

以下のサンプルコードと同様のアイデア

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
5
Vu Anh

入力に関しては、スペースで区切られた入力パラメーターをScript parametersの下のフィールドRun->Edit Configurations。ラップされたモジュールの出力をファイルに書き込むことだけを目的とするラッパークラスを使用している場合を除き、pyCharmで出力をファイルにリダイレクトする直接的な方法はありません。

4
Shan Valleru

PyCharm 5(または以前のバージョン)では、[構成の編集]ウィンドウでスクリプトパラメーターを変更することでこれを行うことができます。そのボックスに、

< filename.in

> filename.out

別の行に

3
Nitin

pythonファイルに読み込みコードを入れることができなかったので、私のための解決策は次のとおりでした:

  1. インストール BashSupport プラグイン
  2. ファイルを作成launcher.shコンテンツあり:

    python filename.py < filename.in > filename.out

  3. PyCharmでbash構成を作成します:Run -> Edit Configurations -> + Bash そして、置きます launcher.shをスクリプト名として

1
Jiří Mauritz