Ответ 1
(добавлено в Pycharm 5)
На экране Edit Configurations
на вкладке Logs
установите флажок:
Save console output to file
и предоставить FULL PATH в выходной файл.
thats it - работает как магия
С командной строкой, если я запускаю файл python, я могу ввести:
python filename.py < filename.in > filename.out
Есть ли способ имитировать это поведение в PyCharm?
(добавлено в Pycharm 5)
На экране Edit Configurations
на вкладке Logs
установите флажок:
Save console output to file
и предоставить FULL PATH в выходной файл.
thats it - работает как магия
Что касается ввода, вы можете предоставить входные параметры, разделенные пробелом, в поле Script parameters
в разделе Run->Edit Configurations
. В pyCharm нет прямого пути для перенаправления вывода в файл, если вы не используете какой-либо класс-оболочку, единственным заданием которого является запись вывода завернутого модуля в файл.
Вы можете загрузить контент в 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
В PyCharm 5 (или даже предыдущих версиях) вы можете сделать это, изменив параметры script в окне Edit Configurations. В этом поле напишите
< filename.in
> filename.out
на отдельных строках
Так как я не мог поместить код загрузки в файл python, решение для меня состояло в следующем:
Создайте файл launcher.sh
с контентом:
python filename.py < filename.in > filename.out
В PyCharm создайте конфигурацию bash: Run -> Edit Configurations -> + Bash
и поместите launcher.sh
в качестве Script name
В PyCharm 2018.3.4 есть поле для перенаправления ввода, выход можно использовать непосредственно в качестве параметра:
Я не уверен, почему этот не был принят/работает, но в PyCharm 2017 работает следующий подход
В окне Run/Debug Configuration
откройте диалоговое окно Script Parameters
и введите свои входные и/или выходные файлы в отдельных строках, подобных этому (с кавычками):
< "input01.txt"
> "output01.txt"
Обратите внимание, что здесь у меня >>
, это добавляет вывод в output01.txt
, так что я использую его на протяжении нескольких запусков.
Я не понимаю, почему этот подход не будет работать с более старыми версиями PyCharm, поскольку он выполняет следующую строку, используя эту конфигурацию:
Также этот подход работает с удаленным интерпретатором на экземпляре Vagrant, поэтому эта команда использует ssh.