从python的stdin读取N个字节并输出到临时文件以进行进一步处理

时间:2017-12-01 07:02:02

标签: python python-2.7 sys bytestream

我想从python脚本的stdin中读取固定数量的字节,并将其逐批输出到一个临时文件中以进行进一步处理。因此,当前N个字节传递给临时文件时,我希望它执行后续脚本,然后从标准输入读取下一个N个字节。我不确定在返回顶部循环之前要迭代什么。这是我尝试过的一个例子。

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 个答案:

答案 0 :(得分:0)

两个快速建议:

  1. 你几乎不应该做While True
  2. Python3
  3. 您是否尝试从文件中读取?还是从实际标准来看? (就像传送到这个脚本的输出一样?)

    如果你正在阅读一个文件,我认为这个答案对你来说是合适的,我从底部列出的其他答案拼凑而成:

    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, how to read bytes from file and save it?