2011-08-01 2 views
2

우리는 txt 파일에 포함 된 uuencoded PDF 파일을 디코딩하려고합니다.특정 uuencoded 파일이 파이썬을 사용하여 제대로 디코딩되지 않는 이유를 어떻게 알 수 있습니까?

우리가 가진 문제는 대부분의 PDF 파일이 파이썬의 uuencode 라이브러리를 사용하여 잘 디코딩되었다는 것입니다. 다음은 코드입니다.

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

그러나 일부 파일은 디코딩 된 후에 열 수 없습니다. "이 문서를 여는 동안 오류가 발생했습니다. 파일이 손상되어 복구 할 수 없습니다."라는 메시지가 나타납니다.

우리가 Google에서 찾을 수있는 유일한 점은 파일이 base64로 인코딩 될 수 있고 파이썬 uuencoding 모듈이 base32 만 지원할 수 있다는 것입니다. base64 또는 base32를 사용하여 uuencoded되었는지 여부를 알 수있는 방법이 있습니까? 여기

우리가 성공적으로 디코딩 임베디드 uuencode 된 PDF 있던 txt 파일의 예입니다 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

것은 우리가이를 디코딩하는 동안 파이썬에서는 어떤 종류의 오류도 나타나지 않으며 모든 것이 정상적으로 작동하는 것처럼 보입니다. 무엇이 제대로 디코딩하지 못하게 할 수 있습니까? 우리가 그들을 처리하는 동안 우리가 이것을 표시 할 수있는 방법이 있습니까?

+0

'except :'는 * bad *이며, 파이썬이 생성하는 모든 진단을 효과적으로 눈이 멀게 만듭니다. – pyroscope

답변

1
>>> uu.decode(open('0000000000-11-005978.txt')) 
Warning: Trailing garbage 

원본 데이터 자체가 손상되었습니다. 이것은 끝에 근접한 라인의 시작 부분 인 ..에 의해 더욱 분명하게 증명됩니다.

+0

감사합니다. 이것은 문제로 밝혀졌습니다. – Colby

+0

경고를 추가해도 출력 PDF가 제대로 열릴 수 있습니다. (필자는 .txt 파일에서 uuencoded 부분을 추출했습니다.) 또한,'..'을'M'으로 바꾸면 경고 메시지가 사라집니다. – Falcon

+0

@Ignacio'..'에서 어떻게 부패했다고 말할 수 있습니까? [UUEncoding] (http://en.wikipedia.org/wiki/Uuencoding) wikipedia 기사에서'.'는 줄의 유효한 시작이고'.'는 줄 내에서 유효합니다. –

0
$ 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 

잘 작동합니다.

+0

흥미 롭습니다.하지만 저는 파이썬에 대해 아주 익숙합니다. 그래서 당신의 접근 방식을 어떻게 번역해야할지 모르겠습니다. 나는 이것을 시도하고 나는 당신과 같은 길이를 얻지 만 파일을 쓰려고 할 때 나는 전에 얻은 것과 같은 오류를 얻는다. Adobe Reader에서 열면 PDF가 여전히 실패합니다. – Colby

+1

아, 디코딩 중에 예외가 발생하지 않았기 때문에 결과 PDF의 유효성을 검사하지 않았습니다. 원본이 고장난 것으로 추측 할 수 있습니다. – pyroscope

+0

도움을 주셔서 감사합니다! – Colby

관련 문제