我正在尝试使用Python通过电子邮件发送自己的PDF文件。我能够自己发送PDF文件的二进制代码,但我无法从这个二进制代码重建PDF文件。
以下是我如何获取PDF文件的二进制代码:
file = open('code.txt', 'w')
for line in open('somefile.pdf', 'rb').readlines():
file.write(str(line))
file.close()
以下是我尝试使用二进制代码创建PDF文件的方法:
file = open('new.pdf', 'wb')
for line in open('code.txt', 'r').readlines():
file.write(bytes(line))
file.close()
然后我收到了这个错误:
追踪(最近一次通话): 文件“something.py”,第3行,in file.write(字节(线)) TypeError:不带编码的字符串参数
我做错了什么?
答案 0 :(得分:0)
在你的第一个块中,以二进制写入模式(wb)打开文件,因为你正在写二进制文件。此外,您不需要将其显式转换为str。它应该是这样的:
file = open('code.txt', 'wb')
for line in open('somefile.pdf', 'rb').readlines():
file.write(line)
file.close()
对于第二个块,以读取二进制模式(rb)打开文件。在这里,也不需要显式转换为字节。它应该是这样的:
file = open('new.pdf', 'wb')
for line in open('code.txt', 'rb').readlines():
file.write(line)
file.close()
这应该可以解决问题。但为什么你需要首先转换它?保持文件完好无损将节省您的辛勤工作和计算能力。