如何解决Python编写二进制文件,字节
>>> import shutil
>>> shutil.copyfile('file_to_read.pdf','file_to_save.pdf')
或者,如果您需要按字节访问(类似于您的结构),则可以这样做:
>>> with open('/tmp/fin.pdf','rb') as f1:
... with open('/tmp/test.pdf','wb') as f2:
... while True:
... b=f1.read(1)
... if b:
... # process b if this is your intent
... n=f2.write(b)
... else: break
但是逐字节可能 真的很慢 。
或者,如果您想要一个可以加快速度的缓冲区(不冒将未知文件大小完全读入内存的风险):
>>> with open('/tmp/fin.pdf','rb') as f1:
... with open('/tmp/test.pdf','wb') as f2:
... while True:
... buf=f1.read(1024)
... if buf:
... for byte in buf:
... pass # process the bytes if this is what you want
... # make sure your changes are in buf
... n=f2.write(buf)
... else:
... break
使用Python 2.7+或3.1+,您还可以使用此快捷方式(而不是使用两个with
块):
with open('/tmp/fin.pdf','rb') as f1,open('/tmp/test.pdf','wb') as f2:
...
解决方法
Python3。我使用QT的文件对话框小部件来保存从Internet下载的PDF。我一直在使用“
open”读取文件,并尝试使用“文件”对话框小部件来写入文件。但是,我一直遇到“
TypeError:’_io.BufferedReader’不支持缓冲区接口”错误。
示例代码:
with open('file_to_read.pdf','rb') as f1:
with open('file_to_save.pdf','wb') as f2:
f2.write(f1)
当不使用’b’指示符时,或者在从Web读取文件(例如urllib或请求)时,此逻辑可以正确处理文本文件。这些是“字节”类型的,我认为我需要打开文件。相反,它以缓冲读取器的形式打开。我尝试了bytes(f1),但得到“
TypeError:’bytes’对象无法解释为整数”。有想法吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。