这篇文章上次修改于 1060 天前,可能其部分内容已经发生变化,如有疑问可询问作者。
昨天群友发了一个漫画给我,我今天下载一看,这他妈什么鬼格式?(.kepub.epub)本着能不下奇怪的软件就不下的理念(更何况这些东西基本上只有安装版,没有解压版),我首先去百度了一下这个格式到底是什么东西.经过一番摸索之后发现它居然是HTML形式的,那就简单了,Python直接开导!
具体来说,电子书格式和Java中的jar包有点像,都是打包改个后缀名.对于一般情况来说,想要解压这些非正常后缀的文件首先要改一下后缀名才行,但是对于程序来说是不需要的,只要文件的二进制流没问题就能解压.
思路很简单,首先通过后缀名判断获取到所有电子书格式的文件,然后在文件中查找图片后缀的文件,并且只解压这些图片,由于存在同名,因此还是创建一个和源文件同名的文件夹比较好(其实是我懒得写重命名)美中不足的是我不知道怎么修改解压路径,图片在文件中的相对路径是image/xxx.jpg,解压之后会在我创建的文件夹中的image文件夹里,经过我一顿折腾后还是放弃了这条路,或许还是写个.bat脚本更合适?
由于源文件还是蛮大的(1.14G),因此我做了一个进度输出,进度条模糊输出和文字详细输出,但是不能一起用这就很操蛋.
代码很少,但是看下面注释中的东西就知道我为什么放弃了(还报错!)
import os
import shutil
import zipfile
from alive_progress import alive_bar
dir_name = r'D:\QQ\964832091\FileRecv\端脑\\'
out_put = os.path.expanduser('~')+r'\Desktop\output\\'
if not os.path.exists(out_put):
os.makedirs(out_put)
suffix_list = ['.jpg', '.jpeg', '.png', '.bmp']
equb = ['equb', 'EQUB']
files_name_list = [name for name in os.listdir(dir_name)]
with alive_bar(len(files_name_list)) as bar:
for item in files_name_list:
zip_file = zipfile.ZipFile(dir_name+item)
zip_list = zip_file.namelist()
for i in zip_list:
for j in suffix_list:
if not j in i:
continue
elif not '.html' in i:
# tmp_img=zip_file.open(i,mode='rb')
tmp_file_path=item.replace('.kepub.epub', '')
# print('\r正在解压:'+tmp_file_path + r'/'+i, end='', flush=True)
zip_file.extract(i, out_put+tmp_file_path)
# shutil.move(out_put+tmp_file_path+i,out_put+tmp_file_path+i.replace('image/',''))
# os.rmdir(out_put+tmp_file_path+'image')
bar()
zip_file.close()
最后的成品
没有评论