0

Python スクリプトの stdin から一定のバイト数を読み取り、それを 1 つの一時ファイルにバッチごとに出力して、さらに処理したいと考えています。したがって、最初の N バイトが一時ファイルに渡されたときに、後続のスクリプトを実行してから、stdin から次の N バイトを読み取る必要があります。While true の前に、一番上のループで何を繰り返すべきかわかりません。これは私が試した例です。

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)
4

1 に答える 1

0

2 つの簡単な提案:

  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')

ソース: https://stackoverflow.com/a/1035360/957648 & Python、ファイルからバイトを読み取って保存する方法は?

于 2017-12-01T07:40:19.557 に答える