【问题标题】:How to visit all folders and run a function?如何访问所有文件夹并运行功能?
【发布时间】:2018-09-16 09:12:30
【问题描述】:

我对 Python 比较陌生。 我正在尝试创建一个程序,如果文件名中存在“_L2”,则从反向删除 3 个字符串。 这是代码。

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 个字符串。

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

我可以得到一条建议吗?

【问题讨论】:

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


    【解决方案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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-22
      相关资源
      最近更新 更多