我有一个Python脚本,它将文件夹中的现有文件名与引用表进行比较,然后确定它是否需要重命名。
当它遍历每个文件名时:
'oldname' = the current file name
'newname' = what it needs to be renamed to我要重命名该文件,并将其移动到一个新文件夹"..\renamedfiles“。
我可以在重命名和移动的同时在循环中迭代吗?
发布于 2017-03-01 20:57:26
如果源和目标位置位于不同的分区/驱动器/设备上,os.rename (和os.replace)将无法工作。如果是这样的话,您需要使用shutil.move (如果可能的话,它将使用原子重命名),如果目标不在同一个文件系统上,则回退到复制-然后删除。在相同的操作中移动和重命名是非常高兴的;不管操作是相同的。
发布于 2017-03-01 21:15:38
是的你能做到的。在Python中,您可以在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')发布于 2017-03-01 20:57:17
要同时执行这两个操作,可以使用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函数允许您同时更改文件及其文件夹的名称。
若要防止重命名和移动文件时出现任何错误,请使用shutil.move。
https://stackoverflow.com/questions/42541748
复制相似问题