如何使用 Python 重命名文件

发布于 2024-08-26 05:59:47 字数 53 浏览 5 评论 0原文

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

I want to change a.txt to b.kml.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(17

怕倦 2024-09-02 05:59:47

使用 os.rename

import os

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

用法:

os.rename('from.extension.whatever','to.another.extension')

Use os.rename:

import os

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

Usage:

os.rename('from.extension.whatever','to.another.extension')
猫腻 2024-09-02 05:59: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)

File may be inside a directory, in that case specify the path:

import os
old_file = os.path.join("directory", "a.txt")
new_file = os.path.join("directory", "b.kml")
os.rename(old_file, new_file)
嘦怹 2024-09-02 05:59:47

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

如果您碰巧使用的是旧版本,则可以使用此处找到的向后移植版本

让我们假设你不在根路径中(只是为了增加一点难度)你想重命名,并且必须提供完整的路径,我们可以看看这个:

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

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

Python 3.6 及更高版本使用 f 字符串!

new_file_name = f"{name_without_extension}_1"

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

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

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

否则 展示其简单性:

Python 3.6+:

from pathlib import Path
p = Path(some_path)
p.rename(Path(p.parent, f"{p.stem}_1_{p.suffix}"))

低于 Python 3.6 的版本使用字符串格式方法:

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

As of Python 3.4 one can use the pathlib module to solve this.

If you happen to be on an older version, you can use the backported version found here

Let's assume you are not in the root path (just to add a bit of difficulty to it) you want to rename, and have to provide a full path, we can look at this:

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

So, you can take your path and create a Path object out of it:

from pathlib import Path
p = Path(some_path)

Just to provide some information around this object we have now, we can extract things out of it. For example, if for whatever reason we want to rename the file by modifying the filename from the_file to the_file_1, then we can get the filename part:

name_without_extension = p.stem

And still hold the extension in hand as well:

ext = p.suffix

We can perform our modification with a simple string manipulation:

Python 3.6 and greater make use of f-strings!

new_file_name = f"{name_without_extension}_1"

Otherwise:

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

And now we can perform our rename by calling the rename method on the path object we created and appending the ext to complete the proper rename structure we want:

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

More shortly to showcase its simplicity:

Python 3.6+:

from pathlib import Path
p = Path(some_path)
p.rename(Path(p.parent, f"{p.stem}_1_{p.suffix}"))

Versions less than Python 3.6 use the string format method instead:

from pathlib import Path
p = Path(some_path)
p.rename(Path(p.parent, "{}_{}_{}".format(p.stem, 1, p.suffix))
唠甜嗑 2024-09-02 05:59:47
import shutil

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

这将有助于重命名或移动文件。

import shutil

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

This will work to rename or move a file.

美胚控场 2024-09-02 05:59:47

os.rename(old, new)

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

os.rename(old, new)

This is found in the Python docs: http://docs.python.org/library/os.html

掩于岁月 2024-09-02 05:59:47

从 Python 3.3 及更高版本开始,通常首选使用 os.replace 而不是 os.rename,因此如果目标文件已存在。

assert os.path.isfile('old.txt')
assert os.path.isfile('new.txt')

os.rename('old.txt', 'new.txt')
# Raises FileExistsError
os.replace('old.txt', 'new.txt')
# Does not raise exception

assert not os.path.isfile('old.txt')
assert os.path.isfile('new.txt')

请参阅文档

As of Python version 3.3 and later, it is generally preferred to use os.replace instead of os.rename so FileExistsError is not raised if the destination file already exists.

assert os.path.isfile('old.txt')
assert os.path.isfile('new.txt')

os.rename('old.txt', 'new.txt')
# Raises FileExistsError
os.replace('old.txt', 'new.txt')
# Does not raise exception

assert not os.path.isfile('old.txt')
assert os.path.isfile('new.txt')

See the documentation.

那些过往 2024-09-02 05:59:47

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

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

Use os.rename. But you have to pass full path of both files to the function. If I have a file a.txt on my desktop so I will do and also I have to give full of renamed file too.

os.rename('C:\\Users\\Desktop\\a.txt', 'C:\\Users\\Desktop\\b.kml')
甜`诱少女 2024-09-02 05:59:47

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

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

import os

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

One important point to note here, we should check if any files exists with the new filename.

suppose if b.kml file exists then renaming other file with the same filename leads to deletion of existing b.kml.

import os

if not os.path.exists('b.kml'):
    os.rename('a.txt','b.kml')
避讳 2024-09-02 05:59:47

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

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

主要好处是您不必构建绝对输出路径 - 您只需传递新文件名即可。第二个好处是,如果所有路径都已经是 Pathlib 对象,它可以保持统一。

Use the Pathlib library's Path.rename instead of os.rename:

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

The primary benefit is that you don't have to construct the absolute output path — you can just pass the new filename. A secondary benefit is that it keeps things uniform if all your paths are all already Pathlib objects.

吾性傲以野 2024-09-02 05:59:47
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)
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)
带刺的爱情 2024-09-02 05:59:47

这是一个仅使用 pathlib 而不触及 os 的示例,它基于字符串 replace 操作更改目录中所有文件的名称,而不使用还有字符串连接:

from pathlib import Path

path = Path('/talend/studio/plugins/org.talend.designer.components.bigdata_7.3.1.20200214_1052\components/tMongoDB44Connection')

for p in path.glob("tMongoDBConnection*"):
    new_name = p.name.replace("tMongoDBConnection", "tMongoDB44Connection")
    new_name = p.parent/new_name
    p.rename(new_name)

Here is an example using pathlib only without touching os which changes the names of all files in a directory, based on a string replace operation without using also string concatenation:

from pathlib import Path

path = Path('/talend/studio/plugins/org.talend.designer.components.bigdata_7.3.1.20200214_1052\components/tMongoDB44Connection')

for p in path.glob("tMongoDBConnection*"):
    new_name = p.name.replace("tMongoDBConnection", "tMongoDB44Connection")
    new_name = p.parent/new_name
    p.rename(new_name)
似最初 2024-09-02 05:59:47
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")

这应该可以做到。蟒蛇 3+

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")

This should do it. python 3+

故事灯 2024-09-02 05:59:47

如何更改目录中文件名的首字母:

import os
path = "/"

for file in os.listdir(path):
    os.rename(path + file, path + file.lower().capitalize())

then = os.listdir(path)
print(then)

How to change the first letter of filename in a directory:

import os
path = "/"

for file in os.listdir(path):
    os.rename(path + file, path + file.lower().capitalize())

then = os.listdir(path)
print(then)
清风疏影 2024-09-02 05:59:47

如果您使用的是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!!")

If you are Using Windows and you want to rename your 1000s of files in a folder then:
You can use the below code. (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!!")
草莓酥 2024-09-02 05:59:47

os.chdir(r"D:\Folder1\Folder2")
os.rename(src,dst)
#src和dst应该在Folder2内

os.chdir(r"D:\Folder1\Folder2")
os.rename(src,dst)
#src and dst should be inside Folder2

情绪少女 2024-09-02 05:59:47
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)
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)
秋心╮凉 2024-09-02 05:59:47

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

os.system('mv oldfile newfile')

You can use os.system to invoke terminal to accomplish the task:

os.system('mv oldfile newfile')
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文