python - 查找文件名中具有特定字符串的所有 .txt 文件,然后读入数据框
问题描述
我有以下不完整的代码,我想执行以下操作
- 在文件名中包含以下关键字的子文件夹的文件夹中查找所有 *.txt 文件。
- 将txt文件的内容读入数据框。
import os
import pandas as pd
path = os.getcwd()
keywords = ['test1', 'test2', 'test3']
result = {} # dict store our results
for filename in os.listdir(path):
for keyword in keywords:
if keyword in filename:
print(filename)
df = pd.read_excel ('.txt')
所需输出(找到的文件列表和包含所有文件内容的数据框)
test1 Dec 05, 2019 10-30-57.txt
test2 Dec 05, 2019 10-30-57.txt
test3 Dec 05, 2019 10-30-57.txt
主要问题是我不知道如何将其应用于具有许多子文件夹的主文件夹。
解决方案
我会让你决定如何从目录中获取文件名。
如果要为每个文件名创建一个数据框,则可以使用以下代码:
import pandas as pd
glb = globals()
keywords = ['test1','test2', 'test3']
filelist = ['your list of filenames']
i = 1
for filename in filelist:
if any(k in filename for k in keywords):
df = f'df{i}'
glb[df] = pd.read_csv(filename)
i+=1
上面的代码将为每个包含 list 中任何单词的文件创建一个数据框 df1, df2, keywords
....。我没有使用实际关键字创建数据框。可能会在多个文件名中找到相同的关键字(例如:test1-2021-01-12.txt, test1-2021-01-15.txt
。在这种情况下,有两个文件具有相同的test1
关键字。因此创建第二个文件将删除第一个文件的内容。
我也不想用文件名创建数据框。文件名中可能有特殊字符或空格。所以我们不能将文件名创建为数据框。相反,我使用df
的是从 1 开始的与计数器连接的。
globals() 的使用允许您创建变量并在以后使用它。如果要跟踪创建的所有数据框,请将 df 的值附加到列表中,然后将它们打印出来或使用列表的索引来浏览每个数据框。
如果您想将所有这些读入单个数据帧,那么解决方案非常简单。
df = pd.DataFrame()
for filename in filelist:
data = pd.read_excel(filename)
df = df.append(data)
推荐阅读
- python - 无法在 python 中 pip 安装 DAG 包
- c++ - 将 n 个整数 n <15 从文件存储到数组中
- python - FTP Python 550 参数不正确的文件名错误
- google-geolocation - 通过 Geolocation 和 Javascript API 登录网站的用户的位置,但违规错误
- android - 如果我使用导航组件在每个片段中设置工具栏,如何删除顶级片段工具栏中的后退按钮?
- python - 使用 while True 多次
- java - 在android中转换日期
- javascript - 滚动后模态CSS高度100%不覆盖屏幕?
- go - go run/vet/build/test 命令在完成后挂起。忽略中断信号
- .net - 为什么F#中有这么多不同类型的`map`函数