В попытке создать простой cat
клон в питона,Как узнать, когда stdin пуст, если он содержит EOF?
sys.stdout.write(sys.stdin.read())
Я заметил, что это не удается ужасно для бинарных файлов (т.е. python cat.py <binaryfile> supposed_copy
), содержащих CTRL + ZEOF/substitude character 0x1a, так что, кажется, вызывает read()
, чтобы рассмотреть его проделанную работу. Я не могу просто перекосить код навсегда, чтобы обойти это, так как очевидно, что в какой-то момент stdin.read()
будет ждать ввода нового ввода, который после достижения истинного конца ввода никогда не произойдет.
Итак, как это можно исправить, т.е.
- Как узнать, когда файл перенаправлен
stdin
полностью читать, или - , как правильно обращаться с этим?
Похоже, вы открываете файл как текст вместо двоичного файла. Можете ли вы показать заявление 'open', пожалуйста? – cdarke
@cdarke: Python открывает stdin и stdout для вас ... –
Это, вероятно, дает вам ответ: http://stackoverflow.com/questions/2850893/reading-binary-data-from-stdin –