Перенаправить вывод функции, которая конвертирует pdf в txt файлы в новую папку в python - PullRequest
0 голосов
/ 06 июня 2019

Я использую Python 3. Мой код использует pdfminer для преобразования PDF в текст. Я хочу получить вывод этих файлов в новую папку. В настоящее время он приходит в существующую папку, из которой он выполняет преобразование в .txt с помощью pdfminer. Как перенаправить вывод в другую папку. Я хочу вывод в папку с именем "D: \ extract_text" Код до сих пор:

from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfpage import PDFPage
from io import StringIO
import glob
import os

def convert(fname, pages=None):
   if not pages:
       pagenums = set()
   else:
       pagenums = set(pages)

   output = StringIO()
   manager = PDFResourceManager()
   converter = TextConverter(manager, output, laparams=LAParams())
   interpreter = PDFPageInterpreter(manager, converter)

   infile = open(fname, 'rb')
   for page in PDFPage.get_pages(infile, pagenums):
       interpreter.process_page(page)
   infile.close()
   converter.close()
   text = output.getvalue()   
   output.close

   savepath = 'D:/extracted_text/'
   outfile = os.path.splitext(fname)[0] + '.txt'
   comp_name = os.path.join(savepath,outfile)
   print(outfile)
   with open(comp_name, 'w', encoding = 'utf-8') as pdf_file:
       pdf_file.write(text)

   return text    



directory = glob.glob(r'D:\files\*.pdf')  

for myfiles in directory:  
     convert(myfiles)

Ответы [ 2 ]

1 голос
/ 06 июня 2019

Проблема заключается в строке:

outfile = os.path.splitext(os.path.abspath(fname))[0] + '.txt'

Если вы распечатаете outfile, вы увидите, что он содержит полный путь к вашему файлу. Заменить его на:

outfile = os.path.splitext(fname)[0] + '.txt'

Это должно решить вашу проблему! Обратите внимание, что это прекратится, если 'D: / extract_text /' не существует. Поэтому создайте этот каталог вручную или программно, используя os.makedir.

РЕДАКТИРОВАТЬ: Чтобы разбить проблему на более мелкие части, откройте новый файл и запустите этот фрагмент, посмотрите, справится ли он, а затем внесите изменения в исходный код:

import os

fname = "some_file.pdf"
text = "Here's the extracted text"
savepath = 'D:/extracted_text/'
outfile = os.path.splitext(fname)[0] + '.txt'
print(outfile)
comp_name = os.path.join(savepath,outfile)
print(comp_name)

with open(comp_name, 'w', encoding = 'utf-8') as pdf_file:
    pdf_file.write(text)
1 голос
/ 06 июня 2019

вы можете использовать os.path, присоединиться к , вам нужно указать путь к каталогу и имя файла с расширением.он создаст полный URL и создаст файл.Вы можете использовать его, как показано ниже

with open(os.path.join(dir_path,fileCompleteName), "w") as file1:
        file1.write("Hello World")

В Windows должно работать любое из нижеперечисленного

"D:/extracted_text/"
os.path.join("/", "D:", "extracted_text", outfile)
os.path.join("D:/", "extracted_text", outfile)

Убедитесь, что путь к каталогу существует "D:/extracted_text"

...