【问题标题】:How to read specific files of known filenames with pandas after using os.walk?使用 os.walk 后如何使用 pandas 读取已知文件名的特定文件?
【发布时间】:2021-01-09 23:52:45
【问题描述】:

我正在使用 os.walk() 来获取某个目录中的所有文件;但是,该目录中有大量我不需要的文件。我知道我想阅读的文件的具体名称,因为它们每天都会更新,并且只有文件名更改的日期。

import pandas as pd
import os
from os import listdir, walk
from os.path import isfile, join

td_str = pd.to_datetime('today').strftime('%Y%m%d') # Returns '20200923'
path = 'C:\\Users\\myuser\\subdirectory\\' + td_str
for root, directories, files in os.walk(path, topdown=False):
    for name in files:
        print(os.path.join(root, name))


### The Output
# C:\Users\myuser\subdirectory\20200923\20200923_file_a.csv
# C:\Users\myuser\subdirectory\20200923\20200923_file_b.csv 
# C:\Users\myuser\subdirectory\20200923\20200923_file_c.csv
# C:\Users\myuser\subdirectory\20200923\20200923_file_d.csv

我知道我想读取 file_b 和 file_c 并将它们放入各自的数据帧中。

df_file_b = pd.read_csv('C:\Users\myuser\subdirectory\20200923\20200923_file_b.csv')
df_file_c = pd.read_csv('C:\Users\myuser\subdirectory\20200923\20200923_file_c.csv')

如何仅使用 pandas 读取这些特定文件?我目前假设我可能需要做一些事情,比如在列表中包含所需的文件名并执行if 循环来检查 os.walk() 是否找到它,但是有没有更有效的方法来做到这一点?

非常感谢。

【问题讨论】:

    标签: python pandas operating-system


    【解决方案1】:

    您可以使用 glob 模块,支持模式:10.7. glob — Unix style pathname pattern expansion

    一个简单的解决方案是使用file_ 和字符范围bc 创建一个过滤器:

    import glob
    print(glob.glob('*file_[b-c]*'))
    

    这将打印出来

    ['20200923_file_b.csv', '20200923_file_c.csv']

    【讨论】:

      猜你喜欢
      • 2018-10-18
      • 1970-01-01
      • 1970-01-01
      • 2019-12-21
      • 2013-05-04
      • 2018-07-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多