Python 文件改名
介绍
在日常的开发工作中,经常会遇到需要对大量文件进行批量重命名的情况。在这种情况下,手动一个一个修改文件名是非常耗时耗力的。幸运的是,Python 提供了强大的文件系统操作功能,可以帮助我们自动化完成这个任务。本文将介绍如何使用Python对文件进行批量重命名。
准备工作
在开始编写代码之前,首先需要安装最新的Python版本。可以从Python官方网站下载并安装Python。
导入模块
在Python中,我们使用os
模块来处理文件和目录操作。os
模块是Python标准库中的一个核心模块,无需额外安装即可使用。在代码的开头添加以下代码来导入os
模块:
import os
获取文件列表
首先,我们需要获取待修改的文件列表。假设我们要将所有以.txt
结尾的文件名中的old
替换为new
。可以使用os.listdir()
函数获取指定目录下的文件列表。下面是获取当前目录下所有文件的代码示例:
file_list = os.listdir('.')
这里的.
表示当前目录,你可以根据实际需要修改为其他目录。
文件名匹配
接下来,我们需要对文件名进行匹配,找出符合修改条件的文件名。Python提供了re
模块,可以使用正则表达式来进行模式匹配。在这里,我们使用正则表达式来判断文件名是否以.txt
结尾,以及是否包含old
字符串。下面是匹配文件名的代码示例:
import re
pattern = r'.*\.txt$'
file_pattern = re.compile(pattern)
matched_files = [file for file in file_list if file_pattern.match(file)]
这里,pattern
表示匹配.txt
结尾的正则表达式,.*
表示匹配任意字符任意次数。file_pattern
使用re.compile()
函数将正则表达式编译成模式对象,matched_files
列表用于存储匹配到的文件名。
文件重命名
一旦找到符合修改条件的文件名,我们就需要对文件名进行修改。在Python中,使用os.rename()
函数来重命名文件。下面是文件重命名的代码示例:
old_str = "old"
new_str = "new"
for file in matched_files:
new_file = file.replace(old_str, new_str)
os.rename(file, new_file)
这里,我们使用str.replace()
函数来将文件名中的old
替换为new
。然后使用os.rename()
函数将旧文件名修改为新文件名。
完整代码示例
下面是一个完整的Python文件改名程序的代码示例:
import os
import re
def rename_files(directory, old_str, new_str):
file_list = os.listdir(directory)
pattern = r'.*\.txt$'
file_pattern = re.compile(pattern)
matched_files = [file for file in file_list if file_pattern.match(file)]
for file in matched_files:
new_file = file.replace(old_str, new_str)
os.rename(os.path.join(directory, file), os.path.join(directory, new_file))
if __name__ == "__main__":
rename_files(".", "old", "new")
这个例子中,我们定义了一个rename_files()
函数,该函数接受三个参数:目录路径、旧字符串和新字符串。在if __name__ == "__main__":
下方调用了rename_files()
函数来进行文件改名操作。
示例运行结果
假设当前目录下有三个文件:old_file.txt
、file.txt
、old.txt
。我们运行上述代码,将所有以.txt
结尾的文件中的old
替换为new
。运行之后,文件名将被修改为:new_file.txt
、file.txt
、new.txt
。
结论
本文中,我们介绍了如何使用Python对文件进行批量重命名。通过简单的几行代码,我们可以轻松地实现文件名的修改操作。这在处理大量文件的时候非常有用,可以节省大量的时间和精力。