使用Python进行文件压缩和解压缩的案例
文件压缩是将一个或多个文件转换为较小大小的存档文件,这可以节省磁盘空间并方便文件传输。Python提供了多种库来进行文件的压缩和解压缩操作,包括zipfile、gzip、tarfile等。
下面是一个使用zipfile库进行文件压缩和解压缩的例子:
压缩文件:
import zipfile
def compress_files(file_paths, output_path):
with zipfile.ZipFile(output_path, 'w') as zipf:
for file in file_paths:
zipf.write(file)
files = ['file1.txt', 'file2.txt', 'file3.txt']
output = 'compressed.zip'
compress_files(files, output)
上述代码中,compress_files函数接收一个包含多个文件路径的列表file_paths和输出压缩文件的路径output_path。使用zipfile.ZipFile创建一个ZipFile对象,并使用w模式打开文件,表示写入操作。然后使用write方法将每个文件写入到压缩文件中。
解压文件:
import zipfile
def extract_files(zip_path, output_dir):
with zipfile.ZipFile(zip_path, 'r') as zipf:
zipf.extractall(output_dir)
compressed_file = 'compressed.zip'
output_directory = 'extracted_files'
extract_files(compressed_file, output_directory)
上述代码中,extract_files函数接收一个压缩文件的路径zip_path和解压缩后文件存放的目录output_dir。使用zipfile.ZipFile打开压缩文件,使用r模式表示只读操作。然后使用extractall方法解压缩到指定的目录。
除了zipfile库,Python还提供了gzip和tarfile库用于压缩和解压缩文件。
使用gzip库进行文件压缩和解压缩的例子:
压缩文件:
import gzip
def compress_file(file_path, output_path):
with open(file_path, 'rb') as f_in:
with gzip.open(output_path, 'wb') as f_out:
f_out.writelines(f_in)
input_file = 'file.txt'
output_file = 'compressed.gz'
compress_file(input_file, output_file)
上述代码中,compress_file函数接收一个输入文件的路径file_path和输出压缩文件的路径output_path。使用open打开输入文件和gzip.open打开输出文件,分别用rb和wb模式表示读取和写入二进制数据。然后使用writelines方法将输入文件的内容写入到输出文件中。
解压文件:
import gzip
def extract_file(zip_path, output_file):
with gzip.open(zip_path, 'rb') as f_in:
with open(output_file, 'wb') as f_out:
f_out.writelines(f_in)
compressed_file = 'compressed.gz'
output_file = 'file.txt'
extract_file(compressed_file, output_file)
上述代码中,extract_file函数接收一个压缩文件的路径zip_path和解压缩后文件的路径output_file。使用gzip.open打开压缩文件和open打开输出文件,分别用rb和wb模式表示读取和写入二进制数据。然后使用writelines方法将压缩文件的内容写入到输出文件中。
使用tarfile库进行文件压缩和解压缩的例子与上述类似, 只是在tarfile.open的时候需要指定压缩或解压缩的模式。
需要注意的是,以上的例子仅展示了如何进行压缩和解压缩操作,并未涉及文件的操作权限、异常处理等内容,实际应用中需根据具体需求进行相应的处理。
