如何访问所有文件夹并运行一个功能?

时间:2018-04-06 10:51:42

标签: string python-3.x while-loop directory

我对Python比较陌生。 我正在尝试创建一个程序,如果' _L2'存在于文件名中。 这是代码。

import os


def deleteInCurrent():
    L = os.listdir(os.getcwd())
    for i in range(len(L)):
        filename = L[i].rsplit(".", 1)[0]
        if '_L2' in filename:
            os.rename(filename+'.'+L[i].rsplit(".", 1)[1], filename[0:len(filename)-3]+'.'+L[i].rsplit(".", 1)[1])

print(os.getcwd())
for path, dirs, files in os.walk(os.getcwd()):
    deleteInCurrent()
    for i in range(len(dirs)):
        os.chdir(dirs[i])
        deleteInCurrent()
        os.chdir("..")
print("Done")

在这里,我能够删除当前目录和较低目录下的文件。

我能做的是检查当前和1个深度较低的目录,如果' _L2'那么从反向删除3个字符串。存在。

但我想做的是检查所有文件夹中的所有文件并自动执行相同的操作。

我能得到一条建议吗?

1 个答案:

答案 0 :(得分:1)

我建议您使用" pathlib"模块而不是" os"模块?

如果是这样,以下代码应该做你想要的:

from pathlib import Path

def ren(old_pathlib_path):
    parent = old_pathlib_path.parent
    stem = old_pathlib_path.stem
    suffix = old_pathlib_path.suffix
    if '_L2' in stem:
        stem = stem[:-3]
        new_pathlib_path = parent / (stem + suffix)
        old_pathlib_path.rename(new_pathlib_path)

start = Path('abs_topmost_dir_path')
for f in start.glob('**/*'):
    ren(f)