python-3.x - 将列表中的每个项目写入具有自动分配文件名的单独 txt 文件(python = 3.6)
问题描述
我正在使用 textract 从 PDF 文件中获取纯文本。对于目录中每个 PDF 文件的纯文本,我将其附加到列表中filetext_list
。我想将列表中的每个项目写入一个单独的 txt 文件,并使用自动分配的文件名,如“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', ' ')
,但我不知道这适合代码的什么位置。谢谢!
解决方案
你到底想做什么?我想我可能误会你了。
最终结果基本上是您想将每个pdf转换为txt文件对吗?
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)
我不确定如何向您指出异步代码出错的地方。但是你最好重新开始思考这个问题,而不是尝试继续使用你目前拥有的逻辑。
每个新的“打开”加上写入都会覆盖原始文件。
所以你得到的是 article_0 和 article_1 以及目录中文件列表中最后一个 pdf 的内容。
您的“range(2)”循环也会为您目录中的每个文件调用一次,因此 article_0 的内容看起来像“第一个文件的内容,然后是第一个文件的内容,然后是第二个文件的内容文件,然后是第一个文件的内容,然后是第二个文件的内容,然后是第三个文件,然后是 1st -> 2nd -> 3rd -> 4th。以此类推。
此外,如果您执行“打开”,则无需关闭文件。它会自动关闭。
推荐阅读
- ios - iOS - 使用“上传脚本”在版本 3.14.0 的 Crashlytics 中上传 Dsym 文件
- codenameone - 如何在代号一中为容器背景制作颜色渐变
- html - 使用 jQuery 和 Angular9 的图像的可拖动和可调整大小
- maps - OpenLayers - 与 2 个不同的图层共享视图
- laravel - 如何将 Laravel 的集合转换为数组对象集合?
- python - 列表中的奇数和偶数
- c - sprintf 没有正确填充缓冲区
- php - How to set a table cel color based on its value in PHP?
- opendaylight - Opendaylight Clustering Load-Balancing
- node.js - Node Worker Threads vs Heroku Workers