Как прочитать входные данные из файла и терминала в сценарии Python? - PullRequest
0 голосов
/ 22 февраля 2019

У меня есть скрипт Python, который считывает некоторые данные из файла с помощью перенаправления оболочки, например,

python script.py < input.txt

После обработки файла я хочу разрешить пользователю вводить некоторые параметры из терминала.Как я могу это сделать?

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019

Поскольку вы пометили вопрос с помощью bash, я думаю, что могу говорить о хитрости, которая заключается в явном открытии /dev/tty.Обычно это используется только для программ, запрашивающих секретов , которые никогда не должны находиться в файле.Но это позволило бы читать из терминала даже после запуска сценария с перенаправленным стандартным вводом.

В любом случае, за исключением особого варианта использования очень , я настоятельно рекомендую вместо этого использовать параметр командной строки, чтобы позволить программе читать из указанного файла, а затем нормально читать из стандартного ввода.

0 голосов
/ 22 февраля 2019

Перенаправление продолжается до тех пор, пока процесс не завершится.Таким образом, вы не можете делать то, что вы хотите.Вместо этого укажите входной файл, используя аргумент командной строки, например:

python script.py --input input.txt

Используйте argparse, чтобы выбрать имя из командной строки и прочитать его как обычный файл.Это позволит sys.stdin свободно делать интерактивные вещи, которые вы хотите с input().

...