Считать 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 ответ

Два быстрых предложения:

  1. Вы должны почти никогда не делать While True
  2. 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, как прочитать байты из файла и сохранить его?

Другие вопросы по тегам