使用Python

时间:2017-03-01 20:47:41

标签: python file-rename

我有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)

4 个答案:

答案 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