使用命令行,如果我正在运行python文件,我可以输入:
python filename.py < filename.in > filename.out
有没有办法模仿PyCharm中的这种行为?
答案 0 :(得分:21)
(在Pycharm 5中添加)
在Edit Configurations
标签下的Logs
屏幕中,选中以下选项:
Save console output to file
并为输出文件提供 FULL PATH 。
就是这样 - 像魔术一样工作
答案 1 :(得分:4)
对于输入,您可以在Script parameters
下的Run->Edit Configurations
字段中提供空格分隔的输入参数。 pyCharm中没有直接的方法将输出重定向到文件,除非你使用一些包装类,其唯一的工作是将包装模块的输出写入文件。
答案 2 :(得分:4)
您可以使用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
类似的想法如下面的示例代码
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文件中加载任何加载代码,因此我的解决方案是:
使用内容创建文件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
在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"
请注意,我在此处>>
,这会将输出附加到output01.txt
,以便我在多次运行中都拥有它。
我不明白为什么这种方法无法使用旧版本的PyCharm,因为它使用此配置执行以下行:
此方法也适用于Vagrant实例上的远程解释器,这就是该命令使用ssh的原因。