常常因为各种压缩格局的不一样用到文件的解压缩时就须要下载不同的解压缩工具去解决不同的文件,以至于桌面上的压缩工具就有三四种,于是应用python做了一个蕴含各种常见格局的文件解压缩的小工具。
浏览全文
常见的压缩格局次要是上面的四种格局:
zip 格局的压缩文件,个别应用360压缩软件进行解压缩。
tar.gz 格局的压缩文件,个别是在linux零碎下面应用tar命令进行解压缩。
rar 格局的压缩文件,个别应用rar压缩软件进行解压缩。
7z 格局的压缩文件,个别应用7-zip压缩软件进行解压缩。
导入zip格局的解压缩解决的非标准库。
import os import zipfile as zip
编写zip解压缩格局的文件压缩函数。
def do_zip(source_, target_file): ''' zip文件压缩 :param source_: 原始文件门路 :param target_file: 指标文件门路 :return: ''' zip_file = zip.ZipFile(target_file, 'w') pre_len = len(os.path.dirname(source_)) for parent, dirnames, filenames in os.walk(source_): for filename in filenames: print(f'{filename}') path_file = os.path.join(parent, filename) arcname = path_file[pre_len:].strip(os.path.sep) zip_file.write(path_file, arcname) zip_file.close()
编写zip解压缩格局的文件解压缩函数。
def un_zip(source_file, target_): ''' zip文件解压缩 :param source_file: 原始文件门路 :param target_: 指标文件门路 :return: ''' zip_file = zip.ZipFile(source_file) if os.path.isdir(target_): pass else: os.mkdir(target_) for names in zip_file.namelist(): zip_file.extract(names, target_) zip_file.close()
导入7z格局的解压缩解决的非标准库。
import py7zr
编写7z解压缩格局的文件压缩函数。
def do_7z(source_, target_file): ''' 7z文件压缩 :param source_: :param target_file: :return: ''' with py7zr.SevenZipFile(target_file, 'r') as file: file.extractall(path=source_)
编写7z解压缩格局的文件解压缩函数。
def un_7z(source_file, target_): ''' 7z文件解压缩 :param source_file: :param target_: :return: ''' with py7zr.SevenZipFile(source_file, 'w') as file: file.writeall(target_)
导入rar格局的解压缩解决的非标准库。
import rarfile as rar
编写rar解压缩格局的文件解压缩函数。
def un_rar(source_file, target_): ''' rar文件解压缩 :param source_file: 原始文件 :param target_: 指标文件门路 :return: ''' obj_ = rar.RarFile(source_file.decode('utf-8')) obj_.extractall(target_.decode('utf-8'))
接下来开始进入正题了,首先应用print函数打印一下菜单选项,能够让用户在启动软件后进行菜单的抉择。
print('==========PYTHON工具:文件解压缩软件==========') print('阐明:目前反对zip、7z、rar格局') print('1、文件解压缩格局:zip/rar/7z') print('2、文件操作类型(压缩/解压):Y/N') print('3、文件门路抉择,须要输出相应的操作文件门路') print('==========PYTHON工具:文件解压缩软件==========')
应用input函数接管用户输出的文件解压缩格局。
format_ = input('请输出文件解压缩的格局:\n')
应用input函数接管用户输出的文件操作类型(压缩/解压)。
type_ = input('请输出文件操作的类型:\n')
应用input函数接管用户输出的须要操作的文件门路。
source_ = input('请输出原始文件的存储门路(文件或目录):\n')
应用input函数接管用户输出的生成的新文件的指标门路。
target_ = input('请输出指标文件的存储门路(文件或目录):\n')
为了放弃输出的灵活性,退出不同格局不同操作类型的业务判断。
if format_ == 'zip' and type_ == 'Y': do_zip(source_, target_) elif format_ == 'zip' and type_ == 'N': un_zip(source_, target_) elif format_ == 'rar' and type_ == 'Y': un_zip(source_, target_) elif format_ == 'rar' and type_ == 'N': un_zip(source_, target_) elif format_ == '7z' and type_ == 'Y': un_zip(source_, target_) elif format_ == '7z' and type_ == 'N': un_zip(source_, target_)
目前性能点是做了三种格局,前期若是须要可能会扩大降级以后的版本。欢送大家在评论区留言,提供比拟新的思路~
【往期精彩】
python中最简略的turtle绘图:奥运五环!
常识汇总:python办公自动化应该学习哪些内容?
python多线程同步售票零碎解决思路…
发现几个好玩的游戏编程平台,与君共勉!
python四个性能检测工具,包含函数的运行内存、工夫等等…