Python批量修改文件名:文件管理利器助力提升效率
2023-12-11 17:58:25
轻松批量修改文件名:Python文件管理利器
简介
在繁忙的日常工作和项目中,我们经常需要对海量文件进行重命名、修改或整理。手动操作不仅费时费力,还容易出错。Python凭借其强大的编程能力,成为我们批量修改文件名的有力助手。本文将详细介绍如何使用Python执行各种文件修改操作,包括替换字符串、添加前缀/后缀、修改文件夹中文件的名称。
基本操作
替换文件名中的特定字符串
import os
# 获取当前目录下的所有文件
files = os.listdir(".")
# 循环遍历文件
for file in files:
# 检查文件名中是否包含特定字符串
if "old_string" in file:
# 替换文件名中的特定字符串
new_file = file.replace("old_string", "new_string")
# 重命名文件
os.rename(file, new_file)
这段代码使用os模块来获取当前目录下的所有文件,并逐一检查文件名中是否包含特定字符串。如果找到匹配的字符串,则将其替换为新的字符串,并使用os.rename函数重命名文件。
添加前缀或后缀
import os
# 获取当前目录下的所有文件
files = os.listdir(".")
# 循环遍历文件
for file in files:
# 添加前缀
new_file = "prefix_" + file
# 添加后缀
# new_file = file + "_suffix"
# 重命名文件
os.rename(file, new_file)
类似地,此代码也使用os模块来获取文件列表,然后依次为每个文件名添加前缀或后缀。它同样使用os.rename函数来更新文件名。
高级操作
使用glob模块进行灵活的文件名匹配
glob模块提供了更强大的文件名匹配和选择功能。它使用通配符来匹配文件名的不同部分,例如:
import glob
# 匹配所有以.txt结尾的文件
files = glob.glob("*.txt")
# 匹配所有包含"image"字符串的文件
files = glob.glob("*image*")
# 匹配所有以.txt结尾且包含"image"字符串的文件
files = glob.glob("*image*.txt")
glob.glob函数接受一个模式参数,该模式可以包含通配符来指定要匹配的文件名特征。
结合glob和os模块批量重命名文件
import glob
import os
# 匹配所有以.txt结尾的文件
files = glob.glob("*.txt")
# 循环遍历文件
for file in files:
# 重命名文件
new_file = file.replace(".txt", ".csv")
os.rename(file, new_file)
此代码将glob模块与os模块结合起来,首先使用glob.glob获取所有以.txt结尾的文件,然后逐个替换文件名中的扩展名,并使用os.rename更新文件名。
修改文件夹中文件的名称
修改指定文件夹中的文件
import os
# 获取指定文件夹下的所有文件
files = os.listdir("folder_name")
# 循环遍历文件
for file in files:
# 重命名文件
new_file = file.replace(".txt", ".csv")
os.rename(file, new_file)
此代码获取指定文件夹下的所有文件列表,并按指定规则更新文件名。
修改文件夹中所有子文件夹下的文件
import os
# 获取当前目录下的所有子文件夹
subdirs = [d for d in os.listdir(".") if os.path.isdir(d)]
# 循环遍历子文件夹
for subdir in subdirs:
# 获取子文件夹下的所有文件
files = os.listdir(subdir)
# 循环遍历文件
for file in files:
# 重命名文件
new_file = file.replace(".txt", ".csv")
os.rename(file, new_file)
此代码将递归遍历当前目录及其所有子文件夹,并对每个遇到的文件更新文件名。
结语
掌握了这些Python技巧,您就可以轻松高效地管理和修改海量文件。告别繁琐的手动操作,让Python成为您文件管理的得力助手。
常见问题解答
-
如何在文件名中添加时间戳?
import os # 获取当前时间戳 timestamp = int(time.time()) # 循环遍历文件 for file in os.listdir("."): # 添加时间戳到文件名 new_file = f"{timestamp}_{file}" # 重命名文件 os.rename(file, new_file)
-
如何从文件名中删除数字?
import os import re # 循环遍历文件 for file in os.listdir("."): # 使用正则表达式删除数字 new_file = re.sub(r"\d+", "", file) # 重命名文件 os.rename(file, new_file)
-
如何在文件名中查找并替换特定文本?
import os # 定义要查找和替换的文本 find_text = "old_text" replace_text = "new_text" # 循环遍历文件 for file in os.listdir("."): # 检查文件名中是否包含要查找的文本 if find_text in file: # 替换文件名中的文本 new_file = file.replace(find_text, replace_text) # 重命名文件 os.rename(file, new_file)
-
如何将文件移动到另一个文件夹?
import os # 定义源文件夹和目标文件夹 source_dir = "source_folder" destination_dir = "destination_folder" # 获取源文件夹中的所有文件 files = os.listdir(source_dir) # 循环遍历文件 for file in files: # 移动文件到目标文件夹 os.rename(os.path.join(source_dir, file), os.path.join(destination_dir, file))
-
如何批量压缩文件?
import os import zipfile # 创建zip压缩文件 with zipfile.ZipFile("compressed_files.zip", "w") as zip_file: # 循环遍历文件 for file in os.listdir("."): # 将文件添加到zip压缩文件 zip_file.write(file)