Chcę pobrać plik bezpośrednio do pamięci za pomocą requests
, aby przekazać go bezpośrednio do czytnika PyPDF2
, unikając zapisu na dysku, ale Nie mogę wymyślić, jak przekazać go jako file object
. Oto, co starałem:ZAPYTANIA: Zwróć obiekt pliku z adresu URL (tak jak przy otwartym ('', 'rb'))
import requests as req
from PyPDF2 import PdfFileReader
r_file = req.get('http://www.location.come/somefile.pdf')
rs_file = req.get('http://www.location.come/somefile.pdf', stream=True)
with open('/location/somefile.pdf', 'wb') as f:
for chunk in r_file.iter_content():
f.write(chunk)
local_file = open('/location/somefile.pdf', 'rb')
#Works:
pdf = PdfFileReader(local_file)
#As expected, these don't work:
pdf = PdfFileReader(rs_file)
pdf = PdfFileReader(r_file)
pdf = PdfFileReader(rs_file.content)
pdf = PdfFileReader(r_file.content)
pdf = PdfFileReader(rs_file.raw)
pdf = PdfFileReader(r_file.raw)
Działa świetnie. Dzięki. – TimY
Wpadając w tę miłą, zwięzłą odpowiedź. Zastanawiam się, @abarnert, czy istnieje zasób, który może nakreślić, jakie metody obiektów podobnych do plików nie są dostępne w obiektach StringIO? – ghukill