![](/img/trans.png)
[英]Use Python to Create Folders Recursively with Folder Names Matching Filenames
[英]Python: Changing filenames and folder names in all folders and subfolders
我想更改給定目錄和所有子文件夾中的文件名和文件夾名。 我的文件夾結構如下:
執行以下代碼時出現以下錯誤。 我已經檢查了論壇,但找不到解決方案。 有人可以幫我解決這個問題,讓我知道我需要做什么才能讓程序正常工作嗎? 或者是否有更好的解決方案來重命名樹中的文件和文件夾?
錯誤信息
FileNotFoundError: [WinError 2] 系統找不到指定的文件:'Filename 1' -> 'filename_1'
代碼
#Change file names and folder names in a given directory and all its
subfolders
import os
os.chdir("path\\to\\folder")
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\\folder"):
for dir_name in dirs:
os.rename(dir_name, dir_name.replace(" ", "_").lower())
for file_name in files:
os.rename(file_name, file_name.replace(" ", "_").lower())
#Print done once all files have been renamed.
print("done")
難道是您在重命名文件夾時在其上行走而找不到該文件夾?
看來您首先需要重命名文件,然后才需要重命名目錄(即使那樣,請確保其自下而上)
嘗試先更改文件名,否則將更改dir_name並丟失引用。
您需要使用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()))
在大多數情況下,以下解決方案均有效,但在對名稱進行規范化之后,仍然可能會出現諸如相同名稱文件的問題。
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))
在這里,我將每個子文件夾中的所有文件復制到另一個路徑。 首先使用os.listdir()
在每個文件夾中移動,然后使用它在文件夾路徑內的文件中移動。 最后使用os.rename()
重命名文件名。 在這里,我將文件名更改為文件夾 name_file 名稱,即“folder_file”:
path = 'E:/Data1'
path1 = 'E:/Data2'
for folder in os.listdir(path):
for file in os.listdir(path + '/'+ folder):
src = path + '/' + folder + '/' + file
des = path1 + '/' + folder + '_' +file
os.rename(src, des)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.