Python 遍历目录

Python loop through directories

我正在尝试使用 python 库 os 遍历我在根目录中的所有子目录,并定位特定文件名并重命名它们。 只是为了清楚这是我的树结构

我的 python 文件位于根级别。

我正在尝试做的是定位目录 942ba 循环遍历所有子目录并找到文件 000000 并将其重命名为 000000.csv

我目前的代码如下:

import os


root = '<path-to-dir>/942ba956-8967-4bec-9540-fbd97441d17f/'
for dirs, subdirs, files in os.walk(root):
    for f in files:
        print(dirs)
        if f == '000000':
            dirs = dirs.strip(root)
            f_new = f + '.csv'
            os.rename(os.path.join(r'{}'.format(dirs), f), os.path.join(r'{}'.format(dirs), f_new))

但这不起作用,因为当我 运行 我的代码时,由于某些原因,代码从 subduers

中删除了日期

任何人都可以帮助我了解如何解决这个问题吗?

一种更有效的遍历文件夹的方法,并且只有 select 您要查找的文件如下:

source_folder = '<path-to-dir>/942ba956-8967-4bec-9540-fbd97441d17f/'
files = [os.path.normpath(os.path.join(root,f)) for root,dirs,files in os.walk(source_folder) for f in files if '000000' in f and not f.endswith('.gz')]
for file in files:
    os.rename(f, f"{f}.csv")

列表理解存储了您要查找的文件的完整路径。您可以将理解中的条件更改为您需要的任何内容。我经常使用此代码片段来查找特定类型的图像,或从 selected 文件中删除不需要的文件。 在 for 循环中,文件被重命名并添加 .csv 扩展名。

我会使用 glob 来查找文件。

import os, glob
zdir = '942ba956-8967-4bec-9540-fbd97441d17f'
files = glob.glob('*{}/000000'.format(zdir))
for fly in files:
    os.rename(fly, '{}.csv'.format(fly))