我如何在命令行上使用PyCharm重定向输入和输出?

时间:2014-02-05 04:44:51

标签: pycharm io-redirection

使用命令行,如果我正在运行python文件,我可以输入:

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

有没有办法模仿PyCharm中的这种行为?

6 个答案:

答案 0 :(得分:21)

(在Pycharm 5中添加)

Edit Configurations标签下的Logs屏幕中,选中以下选项: Save console output to file并为输出文件提供 FULL PATH 。 就是这样 - 像魔术一样工作

enter image description here

答案 1 :(得分:4)

对于输入,您可以在Script parameters下的Run->Edit Configurations字段中提供空格分隔的输入参数。 pyCharm中没有直接的方法将输出重定向到文件,除非你使用一些包装类,其唯一的工作是将包装模块的输出写入文件。

答案 2 :(得分:4)

将输入文件重定向到stdin

您可以使用StringIO

将内容加载到标准输入
import StringIO
sys.stdin = StringIO.StringIO('your input')

因此,如果您想从文件重定向输入,您可以从文件中读取数据并将其加载到stdin

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)

截图:

主程序

Debug Configruration

将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

答案 3 :(得分:3)

在PyCharm 5(甚至以前的版本)中,您可以通过修改“编辑配置”窗口中的脚本参数来完成此操作。在那个框中,写下

< filename.in

> filename.out

在不同的行上

答案 4 :(得分:1)

由于我无法在python文件中加载任何加载代码,因此我的解决方案是:

  1. 安装BashSupport插件
  2. 使用内容创建文件for (var i = 0; i <= numRows - 1; i++) { var row = values[i]; if (listofValues.indexOf(row[0]) === -1 || row[0] == '') { sheet.deleteRow((parseInt(i) + 1) - rowsDeleted); rowsDeleted++; } }

    launcher.sh

  3. 在PyCharm中创建bash配置:python filename.py < filename.in > filename.out 并将Run -> Edit Configurations -> + Bash作为脚本名称

答案 5 :(得分:-1)

我不确定为什么this不被接受/工作,但在PyCharm 2017中,以下方法有效:

Run/Debug Configuration窗口中,打开Script Parameters对话框,然后在单独的行中输入您的输入和/或输出文件(带引号):

< "input01.txt"
> "output01.txt"

script parameters dialog

请注意,我在此处>>,这会将输出附加到output01.txt,以便我在多次运行中都拥有它。

我不明白为什么这种方法无法使用旧版本的PyCharm,因为它使用此配置执行以下行:PyCharm Command Line

此方法也适用于Vagrant实例上的远程解释器,这就是该命令使用ssh的原因。