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')

在上述示例中,我们首先导入了zipfileos模块。然后定义了一个函数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.'))