我有一个Python脚本,它会将文件夹中的现有文件名与参考表进行比较,然后确定是否需要重新命名。
当它遍历每个文件名时:
'oldname' = the current file name
'newname' = what it needs to be renamed to
我想将文件重命名并移动到一个名为“..\renamedfiles”的新文件夹中。
在循环迭代过程中是否可以同时完成重命名和移动操作?
我有一个Python脚本,它会将文件夹中的现有文件名与参考表进行比较,然后确定是否需要重新命名。
当它遍历每个文件名时:
'oldname' = the current file name
'newname' = what it needs to be renamed to
我想将文件重命名并移动到一个名为“..\renamedfiles”的新文件夹中。
在循环迭代过程中是否可以同时完成重命名和移动操作?
是的,你可以做到这一点。在Python中,你可以使用shutil库中的move
函数来实现。
比如说,在Linux系统上,你有一个位于/home/user/Downloads
文件夹下名为“test.txt”的文件,你想要将它移动到/home/user/Documents
并且改名为“useful_name.txt”。你可以在同一行代码中完成这两个任务:
import shutil
shutil.move('/home/user/Downloads/test.txt', '/home/user/Documents/useful_name.txt')
在您的情况下,您可以这样做:
import shutil
shutil.move('oldname', 'renamedfiles/newname')
os.rename
(和os.replace
)将无法工作。如果是这种情况,您需要使用shutil.move
,它会尝试原子重命名(如果可能),如果目标位置不在同一文件系统上,则会回退到拷贝-删除操作。它完全可以在同一操作中同时移动和重命名;操作是相同的。您可以使用os.rename(src, dest)
函数来执行这两个操作。
您应该有一个想要保存文件的目录以及新文件名。您可以在循环中遍历每个文件并执行此操作。
例如:
# In Windows
dest_dir = "tmp\\2"
new_name = "bar.txt"
current_file_name = "tmp\\1\\foo.txt"
os.rename(current_file_name, os.path.join(dest_dir, new_name))
rename
函数允许您同时更改文件和文件夹的名称。import os
for filename in os.listdir("."):
if(filename ...):
newFilename = ...
os.rename(filename, newFilename)
os.rename
和shutil.move
。 - inspectorG4dgetshutil.move
,因为它会执行正确的操作。 - Antti Haapala -- Слава Україні