читать PDF-файл с URL-адреса в память, не сохраняя файл в локальный файл - PullRequest
1 голос
/ 29 мая 2020

У меня проблема с пропуском сохранения файла в локальный файл. Моя проблема в том, как напрямую передать содержимое URL в модуль pdfplumber. Мой код выглядит следующим образом:

from pathlib import Path
import urllib3
import pdfplumber

def read_pdf(url: str) -> str:
    http = urllib3.PoolManager()
    temp = Path('temp.pdf')
    temp.write_bytes(http.request("GET", url).data)
    with pdfplumber.open(temp) as pdf:
        text = pdf.pages[0].extract_text()
    temp.unlink()
    return text

text = read_pdf('https://sample.com/test.pdf')

Он работает, но я хотел бы избежать сохранения файла на локальном компьютере, а делать это только в ОЗУ. Я пробовал io.BytesIO, но он не работает

1 Ответ

0 голосов
/ 29 мая 2020

Вот пример, который использует io.BytesIO() вместо создания любых файлов на жестком диске.
Обратите внимание, что pdfplumber.load(...) используется вместо pdfplumber.open(...).

import urllib3
import pdfplumber
import io


def read_pdf(url: str) -> str:
    http = urllib3.PoolManager()
    temp = io.BytesIO()
    temp.write(http.request("GET", url).data)
    with pdfplumber.load(temp) as pdf:
        text = pdf.pages[0].extract_text()
    return text

text = read_pdf('https://sample.com/test.pdf')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...