슬레이트 (https://pypi.python.org/pypi/slate)를 사용하여 디렉토리에서 여러 PDF 파일의 텍스트를 추출하려고하는 스커피 거미 작업을하고 있습니다. 실제 PDF를 디스크에 저장하는 것에 관심이 없으므로 io.bytesIO 하위 클래스 https://docs.python.org/2/library/io.html#buffered-streams을 살펴 보도록 권유 받았습니다. Creating bytesIO object을 기반으로, 나는 bytesbody 클래스를 pdf 본문으로 초기화했지만 이제는 슬레이트 모듈에 데이터를 전달해야합니다. 지금까지 나는이 : 내가 갖는작성 후 bytesIO 객체에 액세스
def save_pdf(self, response):
in_memory_pdf = BytesIO(response.body)
with open(in_memory_pdf, 'rb') as f:
doc = slate.PDF(f)
print(doc[0])
:
in_memory_pdf.read(response.body)
TypeError: integer argument expected, got 'str'
가 어떻게이 작업을 얻을 수 있나요?
편집 :
with open(in_memory_pdf, 'rb') as f:
TypeError: coercing to Unicode: need string or buffer, _io.BytesIO found
편집 2 :
def save_pdf(self, response):
in_memory_pdf = BytesIO(bytes(response.body))
in_memory_pdf.seek(0)
doc = slate.PDF(in_memory_pdf)
print(doc)
'in_memory_pdf = BytesIO (bytes (response.body))'를 시도해보십시오. – martineau
감사합니다. 이로 인해 초기 문제가 해결되었습니다. – user61629
BytesIO 대신 [StringIO'] (https://docs.python.org/2/library/stringio.html#module-StringIO)를 사용해보십시오. 또한,'with open (...) as f'가 필요없고, 생성 후 in_memory_pdf.seek (0)으로 시작으로 되감기 한 다음, in_memory_pdf'를 사용하십시오. _instead_ of' f'. – martineau