python-3.x - 在多个子目录中,python 重命名单个. txt 文件

我在单个目录中有 ~60 子目录。 其中每一个包含数千个文件,但它们都包含一个名为 test_all_results.txt的文件。

我想要做的是重命名每个 test_all_results.txt 文件, 让它的具有以下名称:

foldername_all_results.txt

最好的方法是?

时间:

在Linux中使用python,使这个:


import os


os.system("mv old_name.txt new_name.txt")



你可以自动使用循环,重命名所有文件名。

你可以:

( 相应地更改代码)


import os



# current directory is the target


direct ="."


for path, dirs, files in os.walk(direct):


 for f in files:


 if os.path.splitext(f)[0] =="test_all_results.txt":


 os.rename(os.path.join(path, f), os.path.join(path,"foldername_all_results.txt"))



有一个答案告诉你使用 os.system() 方法,如果你决定从 python 调用Linux命令我建议你使用 subprocess 模块代替 。

下面是使用 subprocess.call 运行带有两个参数的mv 命令的方法:


import subprocess



subprocess.call(["mv","filename.txt","new-name.txt"])



参考信息: 这是一篇旧的( 但相关的) 文章,解释了为什么使用这些方法是危险

好运。

使用 python os 接口轻松完成。

假设你当前位于主目录中:


import os


#get a list of all sub directories


subdir = os.listdir()



for dir in subdir: 


 if os.path.isdir(dir): #check if directory 


 os.chdir(dir) #move to sub directory


 os.rename('test_all_results.txt', 'foldername_all_results.txt') 


 os.chdir('..') #return to main directory



...