如何检查文件是否已经包含要添加的文本?

问题描述 投票:0回答:1

我目前正在从事一个项目。因此,我想读取目录中的所有* .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

`

提前感谢!

python-3.x append
1个回答
0
投票

您可以做的一件事是加载文件内容并检查文件是否在文件中:

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的文件。

© www.soinside.com 2019 - 2024. All rights reserved.