如何解决循环不同文件夹中的文件
如何遍历 2 个文件夹?在 Apple 及其所有子文件夹中,我想查找包含“绿色”的 Excel 文件。在 Banana 中,我想查找包含“黄色”的文件。我明确需要指定文件夹路径,不能只循环遍历整个 C 驱动器。
import os
folders = ['C:/Desktop/apple','C:/Downloads/banana']
for x in in range(len(folders)):
for root,dirs,files in os.walk(folders[i]):
for file in files:
if file.endswith(".xlsx") and "banana" in folders[i] and "yellow" in file:
df = pd.read_excel(os.path.join(root,file))
df['date'] = pd.to_datetime(df.date)
...
if file.endswith(".xlsx") and "apple" in folders[i] and "green" in file:
df = pd.read_excel(os.path.join(root,file))
df['date'] = pd.to_datetime(df.date)
...
由于所有的 excel 文件看起来都一样,我上面的代码很麻烦,因为我要复制代码来读取数据帧并清理 df。
解决方法
获取符合条件的所有文件路径的最简单方法是使用 glob
包:
import glob
for file in glob.glob('C:/Desktop/apple/*green*.xlsx') + glob.glob('C:/Desktop/banana/*yellow*.xlsx'):
print(file)
df = pd.read_excel(os.path.join(root,file))
df['date'] = pd.to_datetime(df.date)
Glob 使用正则表达式模式匹配。如果您想选择仅以 green
开头的文件,您可以像这样green*
删除第一个星号。
为此使用 pathlib
:
from pathlib import Path
for file in [f"C:/Desktop/{f}" for f in list(Path('apple').glob('*green*.csv')) + list(Path('banana').glob('*yellow*.csv'))]:
df = pd.read_excel(os.path.join(root,file))
df['date'] = pd.to_datetime(df.date)
,
您可以创建一个字典,其中键是文件夹,值是要搜索的内容。伪代码:
import os
to_search = { # <--- the dictionary
"C:/Desktop/apple": "green","C:/Desktop/banana": "yellow",}
for folder,item in to_search.items(): # <--- use dict.items()
for root,dirs,files in os.walk(folder): # <--- here you use "folder"
for file in files:
if file.endswith(".xlsx") and item in file: # <--- here you use "item"
df = pd.read_excel(os.path.join(root,file))
df["date"] = pd.to_datetime(df.date)
# ...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。