我目前正在从事一个项目。因此,我想读取目录中的所有* .pdf文件,提取其文本并将其附加到文本文件中。到现在为止还挺好。是的,我能够做到这一点。
现在的问题:如果我再次读取同一目录,它将再次附加相同的文件。有没有一种方法可以检查提取的文本是否已存在于文件中,从而跳过整个过程?
我的代码现在看起来像这样(我已经创建了目录变量):
`
for filename in os.listdir(directory):
if filename.endswith(".pdf"):
file = os.path.join(directory, filename)
print(file)
#parse data from file
file_data = parser.from_file(file)
#get files text content
text = file_data['content']
#print(type(text))
print("len ", len(text))
#print(text)
#save to textfile
f = open("test2.txt", "a+", encoding = 'utf-8')
f.write(text)
f.close()
else:
continue
`
提前感谢!
您可以做的一件事是加载文件内容并检查文件是否在文件中:
if text in open("test2.txt"):
# write here
else:
# text is already in file, don't write
但是,这效率很低。更好的方法是使用已经写入的文件名创建文件,并检查:
(在代码的开头):
files = open("files.txt").readlines()
([parser.from_file(file)
之前):
if file in files:
continue # don't read or write
([f.close()
之后):
files.append(file)
(整个循环完成之后)
with open("files.txt", "w") as f:
f.write("\n".join(files))
全部放在一起:
files = open("files.txt").readlines()
for filename in os.listdir(directory):
if filename.endswith(".pdf"):
file = os.path.join(directory, filename)
if file in files:
continue # don't read or write
print(file)
#parse data from file
file_data = parser.from_file(file)
#get files text content
text = file_data['content']
#print(type(text))
print("len ", len(text))
#print(text)
#save to textfile
f = open("test2.txt", "a+", encoding = 'utf-8')
f.write(text)
f.close()
files.append(file)
else:
continue
with open("files.txt", "w") as f:
f.write("\n".join(files))
注意,您需要在当前目录中创建一个名为files.txt
的文件。