我想从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)
答案 0 :(得分:0)
两个快速建议:
While True
您是否尝试从文件中读取?还是从实际标准来看? (就像传送到这个脚本的输出一样?)
如果你正在阅读一个文件,我认为这个答案对你来说是合适的,我从底部列出的其他答案拼凑而成:
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?