我无法读取文件,也不明白为什么会这样:
f = open("test/test.pdf", "r")
data = list(f.read())
print data
返回结果:
返回结果:[]
我想打开一个PDF文件,提取每个字节并将其放入列表中。
我的代码有什么问题? :(
谢谢。
f = open("test/test.pdf", "rb")
在 Windows 上读写文件时,必须包含伪模式“b”以进行二进制操作。否则,操作系统会将其认为是“行结束符”的内容进行静默转换,导致输入输出出现错误。
如果你在Windows系统上,Jonathan是正确的,你应该以二进制模式打开文件。
然而,PDF文件将以“%PDF-”开头,无论你是否使用二进制模式,它至少会被读取。
所以我认为你的“test/test.pdf”是一个空文件。
open(filename, "rb")
。f = open("test/test.pdf", "rb")
,而是写with open("test/test.pdf", "r") as f:
。这将确保您的文件始终被关闭。list(f.read())
很少有用。 f.read()
返回一个str
,并调用list
将其转换为字符列表(一字节字符串)。这很少需要。read
都应该有效。您确定test/test.pdf
中有任何内容吗?Python似乎认为没有。我在桌面上有一份PDF文件(它是一个IC数据表LTC1450)
使用“rb”(读取二进制):
f = open("14500lf.pdf", "rb") data = list(f.read()) print data ['%', 'P', 'D', 'F', '-', '1', '.', '5', '\r', '%', '\xe2', '\xe3', '\xcf', '\xd3', '\r', '\n', '1', ' ', '0', ' ', 'o', 'b', 'j', '<', '<', '/', 'C', 'o', 'n', 't', 'e', 'n', 't', 's', ' ', '3', ' ', '0', ' ', 'R', '/', 'T', 'y', 'p', 'e', '/', 'P', 'a', 'g', 'e', '/', 'P', 'a', 'r', 'e', 'n', 't', ' ', '8', '7', ' ', '0', ' ', 'R', '/', 'T', 'h', 'u', 'm', 'b', ' ', '7', '1', ' ', '0', ' ', 'R', '/', 'R', 'o', 't', 'a', 't', 'e', ' ', '0', '/', 'M', 'e', 'd', 'i', 'a', 'B', 'o', 'x', '[', '0', ' ', '0', ' ', '6', '1', '2', ' ', '7', '9', '2', ']', '/', 'C', 'r', 'o', 'p', 'B', 'o', 'x', '[', '0', ' ', '0', ' ', '6', '1', '2', ' ', '7', '9', '2', ']', '/', 'R', 'e', 's', 'o', 'u', 'r', 'c', 'e', 's', ' ', '2', ' ', '0', ' ', 'R', '>', '>', '\r', 'e', ....Snip a few thousand lines... '9', '1', ' ', '0', ' ', 'R', '/', 'I', 'D', '[', '<', 'd', 'd', '3', 'd', '2', '8', 'e', '1', 'd', '9', '0', '4', '6', 'e', '1', 'f', '6', 'e', '7', '0', '8', 'b', 'd', '8', 'e', '4', 'f', '9', 'b', '1', '3', '>', '<', '4', '3', '8', 'a', '7', '7', '2', '3', 'f', 'b', '2', '9', 'e', '7', '4', '6', 'a', '4', 'd', '4', '1', '6', 'a', 'f', '7', '6', '2', 'd', '8', '0', '9', '5', '>', ']', '>', '>', '\r', '\n', 's', 't', 'a', 'r', 't', 'x', 'r', 'e', 'f', '\r', '\n', '2', '9', '0', '2', '6', '9', '\r', '\n', '%', '%', 'E', 'O', 'F', '\r', '\n']