Запись каждого элемента в списке в отдельный текстовый файл с автоматически назначаемым именем файла (python = 3.6) - PullRequest
0 голосов
/ 23 сентября 2018

Я использую textract для получения простого текста из файлов PDF.Для простого текста каждого файла PDF в каталоге я добавляю его в список filetext_list.Я хочу записать каждый элемент списка в отдельный текстовый файл с автоматически назначаемым именем файла, например «article_1».Вот что я сделал до сих пор:

import textract
import os
filetext_list = []
directory=os.getcwd()
for file in os.listdir(directory):
    txt = textract.process(file, method = 'pdfminer')
    filetext_list.append(txt)
    for i in range(2):
        for filetext in filetext_list:    
            with open('artile_{0}.txt'.format(i),'w') as f:
                f.write(str(filetext))
        f.close()

Выходные файлы - "article_0" и "article_1", которые имеют правильные имена.Однако оба файла содержат текст одного и того же элемента в списке.Я хотел, чтобы каждый из них содержал текст отдельного пункта в списке.Есть идеи, почему код не удался?Кроме того, я хотел бы исключить элементы "\ n" в тексте, выполнив что-то вроде .replace('\n', ' '), но я не знаю, где это будет вписываться в код.Спасибо!

1 Ответ

0 голосов
/ 23 сентября 2018

Что именно вы пытаетесь сделать именно?Я думаю, что, возможно, я вас неправильно понимаю.

Конечным результатом является то, что вы хотите конвертировать каждый pdf в текстовый файл, верно?

import textract
import os
filetext_list = []
directory=os.getcwd()

for file in os.listdir(directory):
     txt = textract.process(file, method = 'pdfminer')
     filetext_list.append(txt)

for index, text in enumerate(filetext_list) :
     with open('article_{0}.txt'.format(index),'w') as f:
          f.write(str(text).replace("\n",""))

, таким образом, если содержимое вашего каталога было [thing1.pdf, thing2.pdf, thing3.pdf] тогда вы создали новые файлы article_0 (с содержимым thing1.pdf), article_1 (с содержимым thing2.pdf), article_2 (с содержимым thing3.pdf)

Я не уверен, как указать вам, где вы ошиблись с вашим кодом асинхронно.Но вам лучше начать заново думать об этом, чем пытаться продолжать использовать логику, которая у вас есть в настоящее время.

Каждый новый «open» в сочетании с записью перезаписывает исходный файл.

Итак, вы получаете article_0 и article_1 с содержимым последнего pdf в списке файловв каталоге.

Ваш цикл с "range (2)" также вызывается один раз для каждого файла в вашем каталоге, поэтому содержимое article_0 выглядит как "содержимое первого файла, а затем содержимоеснова первый файл, затем содержимое второго файла, затем содержимое первого файла, затем содержимое второго файла, затем третий, затем 1-й -> 2-й -> 3-й -> 4-й и т. д.

Кроме того, если вы делаете «с открытым», вам не нужно закрывать файл. Он автоматически закрывается после установки.

...