统计所有当前目录下zip文件的jpg文件数

danny posted @ 2014年3月20日 16:15 in defaults with tags python 难维护的代码 , 3228 阅读

用java写个小程序,将一个zip包里所有照片数量统计出来导出到一个txt文件中,(zip里面全是照片)有大神能搞定吗

源自上面这个需求.

当然,我只能单纯从文件拓展名去分析了(只管jpg)...形式审查.

写了一段很难维护的代码,实际代码只有两行.

#!/usr/bin/env python3
import re, zipfile, glob
with open("a.txt", 'w') as f: [f.write("%s %s\n" % (i, (lambda y: len(list(filter(lambda x: re.findall('\.jpg', x, re.I), zipfile.ZipFile(y).namelist()))))(i))) for i in glob.glob('*.zip')]

当然,如果要做实质审查或者不只是jpg,那么 filter的检验函数要变成更加严谨的,比如查看图片标识.

另一方面,两行代码,这么这样了吧.

 

Avatar_small
依云 说:
2014年3月20日 21:44

>>> for i in *.zip; do echo -n $i $'\t'; 7z l $i '*.jpg' | awk '/^---/{p=!p;}/^[^-]/{if(p){print}}' | wc -l; done
a.zip 1
b.zip 2

Avatar_small
danny 说:
2014年3月21日 15:26

awk看得有点晕. 差点不认得了


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter