脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|shell|

服务器之家 - 脚本之家 - Python - Python批量修改文件名操作指南(文件名的替换、前缀、后缀的添加)

Python批量修改文件名操作指南(文件名的替换、前缀、后缀的添加)

2024-04-26 17:39Sitin涛哥 Python

很多时候我们手上有一堆文件,需要修改名称时需要一个一个修改,太麻烦了,这篇文章主要给大家介绍了关于Python批量修改文件名的相关资料,包括文件名的替换、前缀、后缀的添加的相关资料,需要的朋友可以参考下

前言

在日常工作中,经常会遇到需要批量修改文件名的情况,可能是为了更好的组织文件,也可能是为了处理大量的数据文件。Python提供了强大的工具和库来处理这个任务,本文将介绍如何使用Python来批量修改文件名,包括文件名的替换、前缀、后缀的添加等多种操作。

使用os模块和os.path模块

Python的os模块和os.path模块提供了文件和目录操作的基本功能,可以用于文件名的操作。

1. 文件名替换

要批量替换文件名中的特定字符串,可以使用os.listdir()列出目录中的所有文件,然后使用字符串的replace()方法替换文件名中的字符串。

import os

def replace_in_filenames(directory, old_str, new_str):
    for filename in os.listdir(directory):
        if old_str in filename:
            new_filename = filename.replace(old_str, new_str)
            os.rename(os.path.join(directory, filename), os.path.join(directory, new_filename))

# 示例用法
replace_in_filenames('/path/to/directory', 'old_string', 'new_string')

2. 添加前缀和后缀

要在文件名前后添加前缀或后缀,可以使用字符串的拼接操作。

import os

def add_prefix_suffix(directory, prefix, suffix):
    for filename in os.listdir(directory):
        new_filename = prefix + filename + suffix
        os.rename(os.path.join(directory, filename), os.path.join(directory, new_filename))

# 示例用法
add_prefix_suffix('/path/to/directory', 'prefix_', '_suffix')

使用glob模块

glob模块提供了更强大的文件匹配和查找功能,可以使用通配符来选择文件。

1. 文件名匹配

要选择符合特定模式的文件,可以使用glob.glob()函数。

import glob

files = glob.glob('/path/to/directory/*.txt')  # 匹配所有以.txt结尾的文件

2. 批量重命名

结合globos模块,可以轻松批量重命名文件。

import glob
import os

def rename_files(directory, pattern, new_name):
    files = glob.glob(os.path.join(directory, pattern))
    for old_file in files:
        new_file = os.path.join(directory, new_name)
        os.rename(old_file, new_file)

# 示例用法
rename_files('/path/to/directory', '*.txt', 'new_name.txt')

使用shutil模块

shutil模块提供了更多文件操作的功能,包括复制、移动、删除等。

1. 移动文件并重命名

要将文件移动到新的目录并重命名,可以使用shutil.move()函数。

import shutil

def move_and_rename(source, destination):
    shutil.move(source, destination)

# 示例用法
move_and_rename('/path/to/source/file.txt', '/path/to/destination/new_file.txt')

批量修改文件名的高级操作

在批量修改文件名的过程中,有时需要进行更高级的操作,例如使用正则表达式匹配文件名,根据文件的元数据修改文件名等。下面将介绍一些高级操作。

1. 使用正则表达式匹配文件名

Python的re模块允许你使用正则表达式来匹配文件名。这对于复杂的文件名操作非常有用。

import os
import re

def rename_with_regex(directory, pattern, replacement):
    for filename in os.listdir(directory):
        new_filename = re.sub(pattern, replacement, filename)
        os.rename(os.path.join(directory, filename), os.path.join(directory, new_filename))

# 示例用法:将所有数字移动到文件名末尾
rename_with_regex('/path/to/directory', r'(\d+)(.*)', r'\2\1')

2. 使用文件元数据修改文件名

有时需要根据文件的元数据来修改文件名,例如文件的创建日期、修改日期等。可以使用os.path.getctime()os.path.getmtime()函数获取文件的创建时间和修改时间。

import os
import datetime

def rename_with_metadata(directory):
    for filename in os.listdir(directory):
        filepath = os.path.join(directory, filename)
        created_time = os.path.getctime(filepath)
        modified_time = os.path.getmtime(filepath)
        
        # 将时间戳转换为日期字符串,例如:2023-01-15_12-30-45
        created_date = datetime.datetime.fromtimestamp(created_time).strftime('%Y-%m-%d_%H-%M-%S')
        modified_date = datetime.datetime.fromtimestamp(modified_time).strftime('%Y-%m-%d_%H-%M-%S')
        
        new_filename = f"created_{created_date}_modified_{modified_date}.txt"
        os.rename(filepath, os.path.join(directory, new_filename))

# 示例用法:根据文件的创建和修改时间修改文件名
rename_with_metadata('/path/to/directory')

3. 批量重命名文件夹中的文件

有时需要对文件夹中的所有子文件夹进行批量操作,包括重命名子文件夹中的文件。

import os

def rename_files_in_subdirectories(directory, pattern, replacement):
    for root, _, files in os.walk(directory):
        for filename in files:
            if re.search(pattern, filename):
                new_filename = re.sub(pattern, replacement, filename)
                os.rename(os.path.join(root, filename), os.path.join(root, new_filename))

# 示例用法:在所有子文件夹中批量修改文件名
rename_files_in_subdirectories('/path/to/parent_directory', r'pattern', r'replacement')

总结

在日常工作和项目中,批量修改文件名是一个常见的任务,而Python提供了多种方法来简化这一过程。本文详细介绍了如何使用Python的不同模块和技术来进行文件名的批量修改,涵盖了基本操作、高级操作以及文件夹中文件的操作。

首先,使用了os模块和os.path模块,展示了如何批量替换文件名中的特定字符串,以及如何添加前缀和后缀。这些操作适用于基本的文件名修改需求。其次,介绍了glob模块,它使文件名的匹配和选择变得更加灵活。通过结合globos模块,可以轻松地批量重命名文件,更好地管理文件。

进一步,探讨了高级操作,包括使用正则表达式匹配文件名和根据文件的元数据来修改文件名。这些方法适用于处理复杂的文件名操作和根据文件属性进行批量重命名的情况。最后,还介绍了如何在子文件夹中批量修改文件名,以满足更广泛的需求,特别是在处理大量文件和目录结构时。

总之,Python为文件名批量修改任务提供了强大的工具和库,使这一任务变得更加高效和灵活。选择适合自己需求的方法,结合示例代码,可以帮助大家更轻松地管理和组织文件,提高工作效率。

到此这篇关于Python批量修改文件名操作指南的文章就介绍到这了,更多相关Python批量修改文件名内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/wuShiJingZuo/article/details/135243745

延伸 · 阅读

精彩推荐
  • PythonPython实现的基于优先等级分配糖果问题算法示例

    Python实现的基于优先等级分配糖果问题算法示例

    这篇文章主要介绍了Python实现的基于优先等级分配糖果问题算法,涉及Python针对列表的遍历、判断、计算等相关操作技巧,需要的朋友可以参考下...

    Together_CZ8832021-02-05
  • PythonPython如何获取文件路径/目录

    Python如何获取文件路径/目录

    这篇文章主要介绍了Python如何获取文件路径/目录,帮助大家更好的利用python处理文件,感兴趣的朋友可以了解下...

    诸子流40002020-09-23
  • Pythonpython基础详解之if循环语句

    python基础详解之if循环语句

    这篇文章主要介绍了python基础详解之if循环语句,文中有非常详细的代码示例,对正在学习python的小伙伴们有很好的帮助需要的朋友可以参考下...

    佩瑞11212021-10-19
  • Python深入理解python中sort()与sorted()的区别

    深入理解python中sort()与sorted()的区别

    Python list内置sort()方法用来排序,也可以用python内置的全局sorted()方法来对可迭代的序列排序生成新的序列。这篇文章主要介绍了python中sort()与sorted()的区别...

    skaarl4312021-03-30
  • PythonDjango中celery的使用项目实例

    Django中celery的使用项目实例

    Celery是⼀个 基于python开发的分布式异步消息任务队列,通过它可以轻松的实现任务的异步处理,下面这篇文章主要给大家介绍了关于Django中celery使用的相关资...

    宠乖仪5822022-07-07
  • PythonDjango 使用logging打印日志的实例

    Django 使用logging打印日志的实例

    下面小编就为大家分享一篇Django 使用logging打印日志的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    奮翼8122021-02-07
  • PythonOpenCV半小时掌握基本操作之滤波器

    OpenCV半小时掌握基本操作之滤波器

    这篇文章主要介绍了OpenCV基本操作之滤波器,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...

    我是小白呀9742021-12-28
  • Pythonpython处理DICOM并计算三维模型体积

    python处理DICOM并计算三维模型体积

    这篇文章主要为大家详细介绍了python处理DICOM,并计算三维模型体积,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    qd_tudou6252021-06-02