[英]read a binary file (python)
我无法读取文件,我不明白为什么:
f = open("test/test.pdf", "r")
data = list(f.read())
print data
返回: []
我想打开一个PDF,并提取每个字节,并将其放入List中。
我的代码出了什么问题? :(
谢谢,
f = open("test/test.pdf", "rb")
在Windows上读写时,必须包含二进制伪模式“b”。 否则,操作系统会默默地翻译它认为是“行结尾”的内容,从而导致i / o损坏。
如果你在Windows上,Jonathan是正确的,你应该以二进制模式打开文件。
但是,PDF文件将以“%PDF-”开头,无论您是否使用二进制模式,都至少会读取该文件。
所以在我看来你的“test / test.pdf”是一个空文件
b
,即open(filename, "rb")
。
b
不会伤害任何东西,尽管它没有任何意义。 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似乎并不认为有。 你在运行什么平台?
在Windows XP上使用python 2.6,我得到:
f = open(“14500lf.pdf”,“r”)
data = list(f.read())
打印数据
['%','P','D','F',' - ','1','。','5','\\ r','%','\\ xe2','\\ xe3 ','\\ xcf','\\ xd3','\\ 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' ,'我','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','n','d','o','b','j',' \\ r','2','','0','','o','b','j','<','<','/','C','o', 'l','o','r','S','p','a','c','e','<','<','/','D','e ','f','a','u','l','t','R','G','B','','1','0','0',' ','0','','R','>','>' ,'/','F','o','n','t','<','<','/','F','5','','9','6 ','','0','','R','/','F','7','','9','7','','0','',' R','/','F','9','','1','0','6','','0','','R','/','F ','1','1','','1','0','7','','0','','R','/','F','1' ,'4','','1','1','1','','0','','R','/','F','1','6', '','1','1','6','','0','','R','/','F','1','7','','1 ','1','7','','0','','R','/','F','1','3','','1','1' ,'2','','0','','R','>','>','/','P','r','o','c','S' ,'e','t','[','/','P','D','F','/','T','e','x','t',' ]','>','>','\\ r','e','n','d','o','b','j','\\ r','3',' ','0','','o','b','j','<','<','/','L','e','n','g',' t','h','','4','','0','','R','/','F','i','l','t','e ','r','/','F','l','a','t','e','D','e','c','o','d', 'e','>','>','s','t','r','e','a','m','\\ n','H','\\ x89', '\\ xa4','W','\\ xd9','r','T','\\ xc9','\\ x11','\\ xfd','\\ x82','\\ xfb','\\ x0f ','\\ xf5', '\\ xd8','\\ n','\\ x8f','\\ x8a','\\ xda','\\ x97','G','!','\\ x04','\\ x06','\\ X03' ]
在我的桌面上碰巧有PDF(它的IC数据表LTC1450 )
使用“rb”(读取二进制):
f = open(“14500lf.pdf”,“rb”)
data = list(f.read())
打印数据
['%','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','我','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',....剪几千行......
'9','1','','0','','R','/','我','D','[','<','d','d', '3','d','2','8','5','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']
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.