Как перенаправить ввод и вывод с помощью PyCharm, как в командной строке?

С командной строкой, если я запускаю файл python, я могу ввести:

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

Есть ли способ имитировать это поведение в PyCharm?

Ответы

Ответ 1

(добавлено в Pycharm 5)

На экране Edit Configurations на вкладке Logs установите флажок: Save console output to file и предоставить FULL PATH в выходной файл. thats it - работает как магия

введите описание изображения здесь

Ответ 2

Что касается ввода, вы можете предоставить входные параметры, разделенные пробелом, в поле Script parameters в разделе Run->Edit Configurations. В pyCharm нет прямого пути для перенаправления вывода в файл, если вы не используете какой-либо класс-оболочку, единственным заданием которого является запись вывода завернутого модуля в файл.

Ответ 3

Перенаправить входной файл на стандартный ввод

Вы можете загрузить контент в stdin с помощью StringIO

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

Ответ 4

В PyCharm 5 (или даже предыдущих версиях) вы можете сделать это, изменив параметры script в окне Edit Configurations. В этом поле напишите

< filename.in

> filename.out

на отдельных строках

Ответ 5

Так как я не мог поместить код загрузки в файл python, решение для меня состояло в следующем:

  • Установите BashSupport плагин
  • Создайте файл launcher.sh с контентом:

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

  • В PyCharm создайте конфигурацию bash: Run -> Edit Configurations -> + Bash и поместите launcher.sh в качестве Script name

Ответ 6

В PyCharm 2018.3.4 есть поле для перенаправления ввода, выход можно использовать непосредственно в качестве параметра: enter image description here

Ответ 7

Я не уверен, почему этот не был принят/работает, но в PyCharm 2017 работает следующий подход

В окне Run/Debug Configuration откройте диалоговое окно Script Parameters и введите свои входные и/или выходные файлы в отдельных строках, подобных этому (с кавычками):

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

script диалог параметров

Обратите внимание, что здесь у меня >>, это добавляет вывод в output01.txt, так что я использую его на протяжении нескольких запусков.

Я не понимаю, почему этот подход не будет работать с более старыми версиями PyCharm, поскольку он выполняет следующую строку, используя эту конфигурацию: Командная строка PyCharm

Также этот подход работает с удаленным интерпретатором на экземпляре Vagrant, поэтому эта команда использует ssh.