pandas 基于关键字从多个文件夹中删除txt文件

jq6vz3qz  于 2023-02-28  发布在  其他
关注(0)|答案(1)|浏览(148)

我从Edgar下载了一堆10-K文件。我只需要保留关键字为"加密货币"和"区块链"的10-K报告。每家公司都有一个单独的文件夹。然而,我却卡在了从多个文件夹读取txt文件上。下面是我的代码:
步骤1(这部分工作良好,并生成正确的目录)

import os
import pandas as pd

path = 'C:/test/2014/QTR1/'
words = ['cryptocurrency', 'blockchain']

filelist = os.listdir(path)

Path2 = []
for x in filelist:
    Path2.append(path + x+ '/')
print(Path2)

第二步:

for i in Path2:
    filelist2 = os.listdir(i)
    for j in filelist2:
        if j.endswith('.txt'):
                
                each_file_content = open(j, 'r', encoding="utf-8").read()
                if not any(word in each_file_content for word in words):
                    os.unlink(j)

运行后,Jupyter注意到我下面的错误:
FileNotFoundError Traceback(最近调用最后)输入[43],在〈细胞系:1〉()3表示文件列表2中的j:4如果j.以('. txt ')结尾:- ---〉6每个文件内容=打开(j,'r',编码="utf-8"). read()7如果没有(每个文件内容中的单词用于单词中的单词):8 os.断开(j)
未找到文件错误:[Errno 2]没有这样的文件或目录:'0001000180 - 14 - 000019文本文件'
有没有人可以帮我修改一下上面的代码或者有没有其他的想法来完成我提到的任务?
我希望删除不包含这两个关键字的文件,任何建议都会很有帮助!

z9smfwbn

z9smfwbn1#

使用pathlib(rglob递归搜索):

from pathlib import Path

words = ["cryptocurrency", "blockchain"]
files = Path("C:/test/2014/QTR1/").rglob("*.txt")
for file in files:
    each_file_content = open(file, "r", encoding="utf-8").read()
    if any(word not in each_file_content for word in words):
        file.unlink()

相关问题