Я не могу считать файл, и я не понимаю почему:
f = open("test/test.pdf", "r")
data = list(f.read())
print data
Возвраты: []
Я хотел бы открыть PDF, и извлечь каждый байты и поместить его в Список.
Что случилось с моим кодом?:(
Спасибо,
b
в режим вашего файла, то есть open (имя файла, «rb»)
. {{ 1}}
b
ничего не повредит, хотя и ничего не значит. f = open ("test / test.pdf", "rb")
, скажем с open ("test / test.pdf", "r") как f:
. Это гарантирует, что ваш файл всегда будет закрыт. list (f.read ())
вряд ли будет полезным кодом очень часто. f.read ()
повторно вызывает str
и, вызывая list
, создает список символов (однобайтовые строки). Это требуется очень редко. читать
должно работать. Вы уверены, что в test / test.pdf
есть что-нибудь? Python, похоже, не думает, что есть. f = open("test/test.pdf", "rb")
Вы должны включать псевдорежим "b" для двоичного кода при чтении и записи в Windows. В противном случае ОС молча переводит то, что она считает "концами строк", вызывая повреждения ввода-вывода.
Джонатан прав в том, что вы должны открывать файл в двоичном режиме, если вы работаете на windows.
Однако файл PDF будет начинаться с "%PDF-", который, по крайней мере, будет прочитан независимо от того, используете ли вы двоичный режим или нет.
Таким образом, мне кажется, что ваш "test/test.pdf" - это пустой файл
На какой платформе вы работаете?
Используя python 2.6 на Windows XP, я получаю:
f = open("14500lf.pdf", "r")
. данные = list(f.read())
print data
['%', 'P', 'D', 'F', '-', '1', '. ', '5', '\r', '%', '\2', '\3', '\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', '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', '>', '>', '\', 'e', 'n', 'd', 'o', 'b', 'j', '\', '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', 'l', '0', 'r', 'S', 'p', 'a', 'c', 'e', '<', '/', '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', '2', ' ', '0', ' ' ', 'R', '>', '>', '/', 'P', 'r', 'o', 'c', 'S', 'e', 't', '[', '/', 'P', 'D', 'F', '/', 'T', 'e', 'x', 't', ']', '>', '>', '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', 'H', '\x89', '\xa4', 'W', '\xd9', 'r', 'T', '\xc9', '\x11', '\xfd', '\x82', '\xfb', '\x0f', '\xf5', '\xd8', '\xa', '\xda', '\x97', 'G', '! ', '\x04', '\x06', '\x03']
На PDF, который случайно оказался у меня на рабочем столе (это IC Datasheet LTC1450)
Используя "rb" (Read Binary):
f = open("14500lf.pdf", "rb")
данные = list(f.read())
распечатать данные
['%', 'P', 'D', 'F', '-', '1', '. ', '5', '\r', '%', '\2', '\3', '\xcf', '\xd3', '\r', '\n', '1', '\, '0', '\, 'o', 'b', 'j', '<', '<', '/', 'C', 'o', 'n', 't', 'e', 'n', 't', 's', '\, '3', '\, ' ', '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', '>', '>', 'e',. ...Отрезать несколько тысяч строк...
'9', '1', ' ' ', '0', ' ' ', 'R', '/', 'I', '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', '\n', '2', '9', '0', '2', '6', '9', '\n', '%', '%', 'E', 'O', 'F', '\n', '\n']