在Python中,可以使用zipfile
模块来实现文件的压缩和解压缩操作。zipfile
模块提供了创建、读取、写入和提取ZIP文件的功能。以下是一个简单的实现文件压缩和解压缩的工具示例。
import zipfile
import os
def compress_files(zip_name, files_to_compress):
"""
将多个文件压缩到一个ZIP文件中。
:param zip_name: 压缩后的ZIP文件名
:param files_to_compress: 要压缩的文件列表
"""
with zipfile.ZipFile(zip_name, 'w') as zipf:
for file in files_to_compress:
if os.path.exists(file):
zipf.write(file, os.path.basename(file))
print(f"Added {file} to {zip_name}")
else:
print(f"File {file} does not exist.")
# 示例用法
files = ['file1.txt', 'file2.txt', 'file3.txt']
compress_files('archive.zip', files)
import zipfile
def extract_files(zip_name, extract_to='.'):
"""
解压缩ZIP文件到指定目录。
:param zip_name: 要解压的ZIP文件名
:param extract_to: 解压到的目标目录,默认为当前目录
"""
with zipfile.ZipFile(zip_name, 'r') as zipf:
zipf.extractall(extract_to)
print(f"Extracted {zip_name} to {extract_to}")
# 示例用法
extract_files('archive.zip', 'extracted_files')
以下是一个完整的工具示例,允许用户选择是压缩文件还是解压缩文件:
import zipfile
import os
def compress_files(zip_name, files_to_compress):
"""
将多个文件压缩到一个ZIP文件中。
:param zip_name: 压缩后的ZIP文件名
:param files_to_compress: 要压缩的文件列表
"""
with zipfile.ZipFile(zip_name, 'w') as zipf:
for file in files_to_compress:
if os.path.exists(file):
zipf.write(file, os.path.basename(file))
print(f"Added {file} to {zip_name}")
else:
print(f"File {file} does not exist.")
def extract_files(zip_name, extract_to='.'):
"""
解压缩ZIP文件到指定目录。
:param zip_name: 要解压的ZIP文件名
:param extract_to: 解压到的目标目录,默认为当前目录
"""
with zipfile.ZipFile(zip_name, 'r') as zipf:
zipf.extractall(extract_to)
print(f"Extracted {zip_name} to {extract_to}")
def main():
print("1. Compress files")
print("2. Extract files")
choice = input("Choose an option (1 or 2): ")
if choice == '1':
zip_name = input("Enter the name of the zip file to create: ")
files = input("Enter the files to compress (comma separated): ").split(',')
compress_files(zip_name, files)
elif choice == '2':
zip_name = input("Enter the name of the zip file to extract: ")
extract_to = input("Enter the directory to extract to (leave blank for current directory): ")
if extract_to:
extract_files(zip_name, extract_to)
else:
extract_files(zip_name)
else:
print("Invalid choice.")
if __name__ == "__main__":
main()
zipfile
模块会自动创建该目录。通过这个工具,你可以轻松地在Python中实现文件的压缩和解压缩操作。