Python修改文件名称详解

一、基本操作

Python中修改文件名称可以使用os模块中的rename()方法,该方法接收两个参数:源文件名称和新文件名称。以下示例将文件名为“old_name”的文件修改为“new_name”:

import os
os.rename("./old_name", "./new_name")

需要注意的是,如果新文件名称与已有文件的名称相同,则会自动覆盖旧文件。

二、批量修改

如果要批量修改某个文件夹中的文件名称,我们可以使用循环遍历并逐一修改每个文件的名称。

以下示例将文件夹中所有的文件名后缀从“.txt”改为“.md”:

import os
dir_path = "./dir"
files = os.listdir(dir_path)
for filename in files:
    portion = os.path.splitext(filename)
    if portion[1] == ".txt":
        newname = portion[0] + ".md"
        os.rename(os.path.join(dir_path, filename), os.path.join(dir_path, newname))

首先我们获取文件夹中所有文件名,然后使用splitext方法将文件名分为文件名和扩展名两部分。

如果文件的扩展名为“.txt”,则我们将“.md”作为新扩展名来构造新的名称。最后使用os模块中的rename()方法,将旧名称和新名称合并,完成文件的修改。

三、添加日期后缀

我们可以使用datetime模块获取当前日期并添加到文件名的后缀中,以区分不同日期的文件。

以下示例将文件夹中的文件名称添加当前日期(格式为“年-月-日”)后缀:

import os
import datetime
dir_path = "./dir"
files = os.listdir(dir_path)
for filename in files:
    name, ext = os.path.splitext(filename)
    today = datetime.date.today().strftime("-%Y-%m-%d")
    newname = name + today + ext
    os.rename(os.path.join(dir_path, filename), os.path.join(dir_path, newname))

首先,我们使用splitext将文件名分为文件名和扩展名两部分,然后使用datetime模块的today()方法获取当前日期,并将其格式化为字符串。

接着,我们将日期字符串添加到文件名中,并使用os模块中的rename()方法完成文件名称的修改。

四、添加序号

我们也可以将文件名后面添加数字序号,以表示文件的不同版本。

以下示例将文件夹中的文件名称添加递增的数字后缀:

import os
dir_path = "./dir"
files = os.listdir(dir_path)
index = 1
for filename in files:
    name, ext = os.path.splitext(filename)
    newname = "{}_{}{}".format(name, index, ext)
    index += 1
    os.rename(os.path.join(dir_path, filename), os.path.join(dir_path, newname))

我们使用一个计数器index来生成递增的数字,然后将数字拼接到文件名中。最后使用os模块中的rename()方法完成文件名称的修改。

五、文件名称的安全性问题

文件名称的安全性问题是一个不容忽视的问题。如果我们的代码中存在漏洞,可能会导致文件名称被修改为非法名称,例如可执行文件、系统文件等。

针对这个问题,我们可以使用Python的pathlib模块,它提供了一系列方法来保障文件名称的安全性。

以下示例演示了如何使用pathlib模块进行安全性检查,并避免文件名称被修改为非法名称:

import os
import pathlib
dir_path = "./dir"
files = os.listdir(dir_path)
for filename in files:
    name, ext = os.path.splitext(filename)
    path = pathlib.Path(dir_path) / filename
    if path.is_file() and path.suffix in {".txt", ".md", ".doc"}:
        newname = name + "-new" + ext
        path.rename(path.with_name(newname))

在此示例中,我们将文件名转换为pathlib提供的Path对象,然后使用is_file()方法判断该路径是否为文件,并使用suffix属性来检查文件扩展名是否为可用的扩展名。这样做可以避免文件名称被修改为非法名称。最后使用renmame()方法修改文件名称,with_name()方法指定了新的名称。

原创文章,作者:XYHFJ,如若转载,请注明出处:https://www.506064.com/n/370184.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
XYHFJXYHFJ
上一篇 2025-04-18 13:40
下一篇 2025-04-18 13:40

相关推荐

  • Python周杰伦代码用法介绍

    本文将从多个方面对Python周杰伦代码进行详细的阐述。 一、代码介绍 from urllib.request import urlopen from bs4 import Bea…

    编程 2025-04-29
  • Python中引入上一级目录中函数

    Python中经常需要调用其他文件夹中的模块或函数,其中一个常见的操作是引入上一级目录中的函数。在此,我们将从多个角度详细解释如何在Python中引入上一级目录的函数。 一、加入环…

    编程 2025-04-29
  • 如何查看Anaconda中Python路径

    对Anaconda中Python路径即conda环境的查看进行详细的阐述。 一、使用命令行查看 1、在Windows系统中,可以使用命令提示符(cmd)或者Anaconda Pro…

    编程 2025-04-29
  • Python计算阳历日期对应周几

    本文介绍如何通过Python计算任意阳历日期对应周几。 一、获取日期 获取日期可以通过Python内置的模块datetime实现,示例代码如下: from datetime imp…

    编程 2025-04-29
  • Python列表中负数的个数

    Python列表是一个有序的集合,可以存储多个不同类型的元素。而负数是指小于0的整数。在Python列表中,我们想要找到负数的个数,可以通过以下几个方面进行实现。 一、使用循环遍历…

    编程 2025-04-29
  • Python清华镜像下载

    Python清华镜像是一个高质量的Python开发资源镜像站,提供了Python及其相关的开发工具、框架和文档的下载服务。本文将从以下几个方面对Python清华镜像下载进行详细的阐…

    编程 2025-04-29
  • Python程序需要编译才能执行

    Python 被广泛应用于数据分析、人工智能、科学计算等领域,它的灵活性和简单易学的性质使得越来越多的人喜欢使用 Python 进行编程。然而,在 Python 中程序执行的方式不…

    编程 2025-04-29
  • python强行终止程序快捷键

    本文将从多个方面对python强行终止程序快捷键进行详细阐述,并提供相应代码示例。 一、Ctrl+C快捷键 Ctrl+C快捷键是在终端中经常用来强行终止运行的程序。当你在终端中运行…

    编程 2025-04-29
  • Python字典去重复工具

    使用Python语言编写字典去重复工具,可帮助用户快速去重复。 一、字典去重复工具的需求 在使用Python编写程序时,我们经常需要处理数据文件,其中包含了大量的重复数据。为了方便…

    编程 2025-04-29
  • 蝴蝶优化算法Python版

    蝴蝶优化算法是一种基于仿生学的优化算法,模仿自然界中的蝴蝶进行搜索。它可以应用于多个领域的优化问题,包括数学优化、工程问题、机器学习等。本文将从多个方面对蝴蝶优化算法Python版…

    编程 2025-04-29

发表回复

登录后才能评论