我有python脚本,可以将文件夹中的现有文件名与参考表进行比较,然后确定是否需要重命名。
当它循环遍历每个文件名时:
'oldname' = the current file name
'newname' = what it needs to be renamed to
我想重命名该文件并将其移至新文件夹" .. \ renamedfiles"
我可以在迭代循环的同时进行重命名和移动吗?
更新: 道歉,我一般都是scrpting的绿色,但这看起来非常基本。 shutil.move 正是我需要的感谢 - 我只是不知道要找它。下面的成功测试。现在将其用于脚本。
import shutil
os.chdir('C:\Users\me\Desktop\New folder')
renFolder= 'Renamed'
oldname = 'Test.txt'
newname= 'renTest.txt'
shutil.move(oldname, renFolder+'/'+newname)
答案 0 :(得分:7)
os.rename
(和os.replace
)无法正常工作。如果是这种情况,则需要use shutil.move
,如果可能,将使用原子重命名,如果目标不在同一文件系统上,则需要回退到复制然后删除。在同一操作中移动和重命名都非常高兴;无论如何操作都是一样的。
答案 1 :(得分:7)
是的,你可以这样做。在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')
干杯。
答案 2 :(得分:0)
在所需目录中创建一个Python文件并编写类似的内容:
import os
for filename in os.listdir("."):
if(filename ...):
newFilename = ...
os.rename(filename, newFilename)
答案 3 :(得分:0)
要执行这两项操作,您可以使用os.rename(src, dest)
功能。
您应该有想要的目录来保存文件,以及新文件名。您可以为循环中运行的每个文件执行此操作。
例如:
dest_dir = "/tmp/2"
new_name = "bar.txt"
current_file_name = "/tmp/1/foo.txt"
os.rename(current_file_name, dest_dir+"/"+new_name)
rename
功能允许您同时更改文件名和文件夹。
要防止重命名和移动文件时出现任何错误,请使用shutil.move。