Python 文件打包并改名
简介
在Python中,我们经常需要将多个文件打包成一个文件来方便传输或者发布。同时,有时候我们还需要对这个打包的文件进行重命名以符合我们的需求。本文将介绍如何使用Python来实现文件打包和改名的操作。
文件打包
打包文件
在Python中,我们可以使用zipfile
模块来进行文件的打包操作。下面是一个简单的示例,将指定目录下的文件打包成一个zip文件:
import zipfile
import os
def zip_directory(directory, output_path):
with zipfile.ZipFile(output_path, 'w', zipfile.ZIP_DEFLATED) as zipf:
for root, dirs, files in os.walk(directory):
for file in files:
file_path = os.path.join(root, file)
zipf.write(file_path, os.path.relpath(file_path, directory))
# 打包当前目录下的所有文件
zip_directory('.', 'archive.zip')
在上述示例中,我们首先导入了zipfile
和os
模块。然后定义了一个函数zip_directory
,该函数接受一个目录和一个输出路径作为参数,将目录下的所有文件打包成一个zip文件。
在函数中,我们使用zipfile.ZipFile
来创建一个zip文件对象,然后使用os.walk
来遍历目录下的所有文件。对于每个文件,我们使用zipf.write
将其添加到zip文件中。需要注意的是,在添加文件时,我们使用了os.path.relpath
来将文件路径转换为相对路径,以确保打包的文件结构正确。
最后,我们调用zip_directory
函数来打包当前目录下的所有文件,并将打包后的文件保存为archive.zip
。
解压文件
与打包文件相对应的是解压文件操作。在Python中,我们同样可以使用zipfile
模块来进行文件的解压操作。下面是一个简单的示例,将指定的zip文件解压到指定的目录:
import zipfile
import os
def unzip_file(file_path, output_directory):
with zipfile.ZipFile(file_path, 'r') as zipf:
zipf.extractall(output_directory)
# 解压文件到当前目录下的output文件夹
unzip_file('archive.zip', 'output')
在上述示例中,我们定义了一个函数unzip_file
,该函数接受一个zip文件路径和一个输出目录作为参数,将zip文件解压到指定的目录。函数中我们使用zipfile.ZipFile
来打开zip文件,并使用zipf.extractall
将文件解压到指定的目录中。
最后,我们调用unzip_file
函数来解压名为archive.zip
的文件到当前目录下的output
文件夹。
文件改名
改名文件
在Python中,我们可以使用os
模块来对文件进行改名操作。下面是一个简单的示例,将指定目录下的文件按照一定规则进行改名:
import os
def rename_files(directory, rule):
for root, dirs, files in os.walk(directory):
for file in files:
file_path = os.path.join(root, file)
new_file_name = rule(file)
new_file_path = os.path.join(root, new_file_name)
os.rename(file_path, new_file_path)
# 改名当前目录下的所有文件,将文件名后面加上"_new"
rename_files('.', lambda x: x.replace('.', '_new.'))