我想更改给定目录和所有子文件夹中的文件名和文件夹名称。我的文件夹结构如下:
执行下面的代码时出现以下错误。我已经检查了论坛,但找不到解决方案。有人可以帮我解决这个问题,让我知道我需要做些什么才能让程序正常运行? 或者是否有更好的解决方案来重命名树中的文件和文件夹?
错误消息
FileNotFoundError:[WinError 2]系统找不到指定的文件:'Filename 1' - > 'filename_1'
代码
I/System.out: Before:
I/System.out: false
I/System.out: false
I/System.out: After:
I/System.out: false
I/System.out: false
答案 0 :(得分:0)
可能是因为你在重命名文件时走在文件夹上而无法找到它?
看起来你首先需要重命名文件,然后才重命名(甚至那时 - 确保它是自下而上的)
答案 1 :(得分:0)
首先尝试更改文件名,否则您将更改dir_name并丢失参考。
答案 2 :(得分:0)
您需要使用root
,否则重命名无法找到路径:
for root, dirs, files in os.walk("path/to/folder"):
for name in dirs + files:
os.rename(os.path.join(root, name), os.path.join(root, name.replace(" ", "_").lower()))
答案 3 :(得分:0)
以下解决方案大部分时间都可以使用,在规范化名称后,仍然可能存在类似名称文件的问题。
import os
os.chdir("path/to/dir")
print(os.getcwd())
#Walk the directory and change the file names and folder names in all folders and subfolders.
for root, dirs, files in os.walk("path/to/dir", topdown=False):
for file_name in files:
new_name = file_name.replace(" ", "_").lower()
if (new_name != file_name):
os.rename(os.path.join(root, file_name), os.path.join(root, new_name))
for dir_name in dirs:
new_name = dir_name.replace(" ", "_").lower()
if (new_name != dir_name):
os.rename(os.path.join(root, dir_name), os.path.join(root, new_name))