如何使用Python重命名文件

时间:2010-03-22 09:59:24

标签: python file-rename

我想将a.txt更改为b.kml

14 个答案:

答案 0 :(得分:444)

使用os.rename

import os

os.rename('a.txt', 'b.kml')

答案 1 :(得分:47)

文件可能在目录中,在这种情况下指定路径:

import os
old_file = os.path.join("directory", "a.txt")
new_file = os.path.join("directory", "b.kml")
os.rename(old_file, new_file)

答案 2 :(得分:42)

import shutil

shutil.move('a.txt', 'b.kml')

这将重命名或移动文件。

答案 3 :(得分:15)

从Python 3.4开始,可以使用pathlib模块来解决这个问题。

如果您使用的是旧版本,则可以使用找到的移植版本here

让我们假设您不在根路径中(只是为了给它增加一些难度)你要重命名,并且必须提供完整路径,我们可以看一下:

some_path = 'a/b/c/the_file.extension'

因此,您可以走自己的路径并从中创建一个Path对象:

from pathlib import Path
p = Path(some_path)

为了提供有关我们现在拥有的这个对象的一些信息,我们可以从中提取出一些东西。例如,如果出于某种原因我们想通过将文件名从the_file修改为the_file_1来重命名文件,那么我们可以获取文件名部分:

name_without_extension = p.stem

并且仍然持有扩展名:

ext = p.suffix

我们可以通过简单的字符串操作来执行修改:

new_file_name = "{}_{}".format(name_without_extension, 1)

现在我们可以通过调用我们创建的路径对象上的rename方法来执行重命名,并附加ext来完成我们想要的正确重命名结构:

p.rename(Path(p.parent, new_file_name + ext))

很快就会展示它的简洁性:

from pathlib import Path
p = Path(some_path)
p.rename(Path(p.parent, "{}_{}".format(p.stem, 1) + p.suffix))

答案 4 :(得分:14)

os.rename(old, new)

这可以在Python文档中找到:http://docs.python.org/library/os.html

答案 5 :(得分:5)

使用os.rename。但是你必须将两个文件的完整路径传递给该函数。如果我的桌面上有一个文件a.txt,那么我会这样做,而且我也必须完整地重命名文件。

 os.rename('C:\\Users\\Desktop\\a.txt', 'C:\\Users\\Desktop\\b.kml')

答案 6 :(得分:3)

import os

# Set the path
path = 'a\\b\\c'  
# save current working directory
saved_cwd = os.getcwd()
# change your cwd to the directory which contains files
os.chdir(path)
os.rename('a.txt', 'b.klm')
# moving back to the directory you were in 
os.chdir(saved_cwd)

答案 7 :(得分:2)

这里需要注意的一点是,我们应该检查是否存在使用新文件名的文件。

假设如果 b.kml 文件存在,那么重命名具有相同文件名的其他文件会导致删除现有的 b.kml。

import os

if not os.path.exists('b.kml'):
    os.rename('a.txt','b.kml')

答案 8 :(得分:0)

您可以使用os.system调用终端来完成任务:

os.system('mv oldfile newfile')

答案 9 :(得分:0)

import shutil
import os

files = os.listdir("./pics/") 

for key in range(0, len(files)):
 print files[key]
 shutil.move("./pics/" + files[key],"./pics/img" + str(key) + ".jpeg")

这应该这样做。 python 3 +

答案 10 :(得分:0)

    import os
import re
from pathlib import Path

for f in os.listdir(training_data_dir2):
  for file in os.listdir( training_data_dir2 + '/' + f):
    oldfile= Path(training_data_dir2 + '/' + f + '/' + file)
    newfile = Path(training_data_dir2 + '/' + f + '/' + file[49:])
    p=oldfile
    p.rename(newfile)

答案 11 :(得分:0)

如果您正在使用 Windows ,并且想在一个文件夹中重命名1000个文件,则: 您可以使用以下代码。 (Python3)

import os

path = os.chdir(input("Enter the path of the Your Image Folder :  ")) #Here put the path of your folder where your images are stored

image_name = input("Enter your Image name : ") #Here, enter the name you want your images to have

i = 0

for file in os.listdir(path):

    new_file_name = image_name+"_" + str(i) + ".jpg" #here you can change the extention of your renmamed file.
    os.rename(file,new_file_name)

    i = i + 1

input("Renamed all Images!!")

答案 12 :(得分:0)

使用Pathlib库的Path.rename而不是os.rename:

import pathlib

original_path = pathlib.Path('a.txt')
new_path = original_path.rename('b.kml')

答案 13 :(得分:0)

os.chdir(r“ D:\ Folder1 \ Folder2”)
os.rename(src,dst)
#src和dst应该位于Folder2内