Считать N байтов из stdin python и вывести во временный файл для дальнейшей обработки
Я хотел бы прочитать фиксированное количество байтов из stdin скрипта Python и вывести его в один временный пакет файлов за пакет для дальнейшей обработки. Поэтому, когда первые N байтов передаются во временный файл, я хочу, чтобы он выполнил последующие сценарии и затем прочитал следующие N байтов из stdin. Я не уверен, что итерировать в верхнем цикле, прежде чем пока истина. Это пример того, что я пробовал.
import sys
While True:
data = sys.stdin.read(2330049) # Number of bytes I would like to read in one iteration
if data == "":
break
file1=open('temp.fil','wb') #temp file
file1.write(data)
file1.close()
further_processing on temp.fil (I think this can only be done after file1 is closed)
1 ответ
Два быстрых предложения:
- Вы должны почти никогда не делать
While True
- python3
Вы пытаетесь читать из файла? или из фактического стандарта в? (Как вывод сценария по этому поводу?)
Вот ответ, который я думаю, будет работать для вас, если вы читаете из файла, который я собрал из некоторых других ответов, перечисленных внизу:
with open("in-file", "rb") as in_file, open("out-file", "wb") as out_file:
data = in_file.read(2330049)
while byte != "":
out_file.write(data)
Если вы хотите читать с фактического стандарта в, я бы прочитал все это, а затем разделить его на байты. Единственный способ, которым это не сработает, - это если вы пытаетесь иметь дело с постоянными потоковыми данными... которые я бы определенно не использовал стандартными для
.encode('UTF-8')
а также .decode('hex')
методы могут быть полезны для вас также.
Источники: /questions/41061283/chtenie-dvoichnogo-fajla-i-zatsiklivanie-kazhdogo-bajta/41061291#41061291 & Python, как прочитать байты из файла и сохранить его?