在Python中重命名任何文件或目录中的部分名称

在Python中重命名任何文件或目录中的部分名称,python,rename,batch-rename,Python,Rename,Batch Rename,我有一个包含多个文件夹和文件的根文件夹,我需要使用Python重命名所有匹配的通信。例如,我想重命名包含单词“test”的文件和文件夹,并替换为“earth” 我使用的是Ubuntu服务器18.04。我已经试过一些密码了。但我会留下最后一个我试过的。我认为这真的很容易做到,但我几乎没有任何py方面的知识,这是我目前唯一的解决方案 import os def replace(fpath, test, earth): for path, subdirs, files in os.walk(

我有一个包含多个文件夹和文件的根文件夹,我需要使用Python重命名所有匹配的通信。例如,我想重命名包含单词“test”的文件和文件夹,并替换为“earth”

我使用的是Ubuntu服务器18.04。我已经试过一些密码了。但我会留下最后一个我试过的。我认为这真的很容易做到,但我几乎没有任何py方面的知识,这是我目前唯一的解决方案

import os

def replace(fpath, test, earth):
    for path, subdirs, files in os.walk(fpath):
        for name in files:
            if(test.lower() in name.lower()):
                os.rename(os.path.join(path,name), os.path.join(path,
                                            name.lower().replace(test,earth)))

将遍历所有文件和文件夹,并将名称从test更改为earth

以下是一些适用于您的工作代码:

def replace(fpath):
    filenames = os.listdir()
    os.chdir(fpath)
    for file in filenames:
        if '.' not in file:
            replace(file)
        os.rename(file, file.replace('test', 'earth'))
下面是对代码的解释:

  • 首先,我们得到目录中文件名的列表
  • 之后,我们切换到所需的文件夹
  • 然后我们遍历文件名
  • 程序将尝试将每个文件名中的任何“test”实例替换为“earth”
  • 然后,它将名称中带有“test”的文件重命名为替换了“test”的版本
  • 如果当前迭代的文件是一个文件夹,它将使用新文件夹再次运行该函数,但完成后将恢复到原始文件夹

编辑以通过子文件夹添加递归迭代。

非常感谢!但是我如何才能将代码搜索放在子文件夹中呢?@Kulcanhez很抱歉回复太晚了。我对答案进行了编辑以适应这一点。