我正在尝试编写一个重命名文件夹的函数,该文件夹来自某个输入表单,并保存结果存储在dlg.result中。选择文件夹(他的名字),存储在selectedItems [0]
例如:
1)balancer / balancer / test.py - (改为main) - > main / balancer / test.py(OK!)
2)balancer / balancer / test.py - (更改第二个文件夹名称) - > balancer / main / test.py(不起作用)
如何修复第二项?
...
for root, subdir, files in os.walk(file_path):
for filename in files:
file_in_folder_path = os.path.join(root, filename)
file_hash, size = md5_for_file(file_in_folder_path)
basic_folder = os.path.normpath(root) + '/'
basic_folder = basic_folder.replace(defaultDir, '')
new_path = basic_folder.replace(selectedItems[0], dlg.result, 1)
new_path = new_path.replace(defaultDir, '')
rnm_files.append((filename, basic_folder, file_hash, filename, new_path))
...
答案 0 :(得分:3)
如果您只是想要一种重命名非空目录的方法,请使用shutil.move
。它将重命名目录,保存目录的内容。该目录的新名称不应该已经存在,否则您将遇到麻烦。
这是一个基本的例子。假设平衡器是您当前的目录:
import shutil
shutil.move('balancer/', 'main/')
该函数的参数是源目录的文件路径(绝对或相对,两者都有效)和同一路径的新名称。您无需对这些目录的内容执行任何操作。