我对python不是很熟悉,但必须编写一个脚本,将二进制文件放入另外两个文件中。第一个文件应该每1个字节读取一次,第二个文件应该每2个字节读取一次。我已经编写了以下脚本,但不知怎么的,所有输出文件都是零。
你能帮忙吗?你知道吗
from pip._vendor.msgpack.fallback import xrange
filePath = sys.argv[1]
yuv_string_bytes = bytes(open(filePath, 'rb').read())
file_uv = open("uv_buffer", "wb+")
file_y = open("y_buffer", "wb+")
for i in xrange(0, len(yuv_string_bytes), 2):
uv = bytes(yuv_string_bytes[i])
y = bytes(yuv_string_bytes[i+1])
file_uv.write(uv)
file_y.write(y)
file_y.close()
file_uv.close()
内存效率最高的方法是逐字节读取输入文件,然后依次将该字节写入其他文件:
与将整个文件读入内存相比,一次只能在内存中存储两个字节。您可以一次读取较大的块(例如,
1024
或1024 * 1024
),然后将它们分发到两个文件中,具体取决于CPU/IO和内存优化之间的最佳权衡:问题是bytes(n)构造了一个大小为n的byte对象(所有值都设置为0x00)。我会把它改成:
收件人:
但正如其他人所说,您的实现并不是实现这一点的最佳方式。Python有很多特性可以帮助处理这种字符串和数据操作。你知道吗
简单多了
相关问题 更多 >
编程相关推荐