$ echo ciao | python -c 'import sys; print sys.stdin.isatty()'
False
Конечно, ваша IDE на основе графического интерфейса может выбрать "обмануть" вас, открыв вместо этого псевдотерминал (вы можете сделать это сами с другими программами с pexpect , и что такое соус для гуся ...! -), в этом случае isatty
или любой другой подход внутри Python не может определить разницу. Но тот же трюк также «обманул бы» вашу примерную bash
программу (точно таким же образом), так что, я думаю, вы об этом знаете. ОТО, это сделает невозможным для программы принимать ввод через обычный Unix-канал!
Поэтому более надежный подход может заключаться в том, чтобы явно сообщить программе, должна ли она выводить в stdout
или куда-то еще, например, с флагом командной строки.