Как мы можем выяснить, почему некоторые uuencoded файлы не декодируются должным образом с помощью Python? - PullRequest
2 голосов
/ 02 августа 2011

Мы пытаемся декодировать некоторые uuencoded PDF-файлы, которые встроены в текстовый файл.

Проблема, с которой мы столкнулись, заключается в том, что большинство файлов PDF отлично декодируются с использованием библиотеки Python uuencode. Вот код:

try:
    decoded_file,m=uudecode(fileString)
except:
    decoded_file=''

Однако некоторые файлы не могут быть открыты после их декодирования. Мы получаем сообщение «Произошла ошибка при открытии этого документа. Файл поврежден и не может быть восстановлен».

Единственное, что мы могли найти в Google, это то, что наши файлы могли быть закодированы с использованием base64, а модуль Python uuencoding поддерживает только base32. Есть ли способ определить, был ли он закодирован с использованием base64 или base32?

Вот пример txt-файла со встроенным uuencoded pdf, который мы успешно декодировали: http://www.sec.gov/Archives/edgar/data/1108046/000000000011020832/0000000000-11-020832.txt

А вот пример того, что не удалось: http://www.sec.gov/Archives/edgar/data/914257/000000000011005978/0000000000-11-005978.txt

Пока мы декодируем их в Python, никаких ошибок не появляется, и кажется, что все работает как надо. Что может быть причиной их неправильного декодирования? Есть ли способ, которым мы могли бы пометить это, пока мы обрабатываем их?

Ответы [ 2 ]

1 голос
/ 02 августа 2011
>>> uu.decode(open('0000000000-11-005978.txt'))
Warning: Trailing garbage

Исходные данные повреждены.Об этом также свидетельствует .. в начале линии около конца.

0 голосов
/ 02 августа 2011
$ python -c "import urllib2; print len(urllib2.urlopen('http://www.sec.gov/Archives/edgar/data/914257/000000000011005978/0000000000-11-005978.txt').read().decode('uu'))"
43124

работает просто отлично.

...