2020-05-13zipfile乱码及glob等
2020-05-13 本文已影响0人
lzjngu
zipfile读取支持cp437和utf-8两种编码,因此显示时要解码成特定环境的编码(比如win系统为gbk),不然会出现乱码。实例如下:
import zipfile
# 默认模式r,读
azip = zipfile.ZipFile("/myfile/test.zip", 'r')
# 返回所有文件夹和文件
zip_list = azip.namelist()
for zip_file in zip_list:
print(zip_file)
print(zip_file.encode('utf-8'))
try:
zip_file = zip_file.encode('cp437').decode('gbk')
except:
zip_file = zip_file.encode('utf-8').decode('utf-8')
print(zip_file)
总之,转换成unicode,压缩前是什么编码,使用什么编码encode再decode回来
参考链接:
https://www.cnblogs.com/yaomaomao/p/8671344.html
rar, zip,tar, gz压缩,解压缩文件参考:
https://www.cnblogs.com/claireyuancy/p/6702340.html
glob的使用
glob模块可以查找符合特定规则的文件路径名。查找文件只用到三个匹配符:”* ”, “?”, “[]”。”* ”匹配0个或多个字符;”?”匹配单个字符;”[]”匹配指定范围内的字符,如:[0-9]匹配数字。
glob.glob
返回所有匹配的文件路径列表。该方法需要一个参数用来指定匹配的路径字符串(字符串可以为绝对路径也可以为相对路径),其返回的文件名只包括当前目录里的文件名,不包括子文件夹里的文件。下面是使用glob.glob的例子:
import glob
#获取指定目录下的所有图片
print (glob.glob(r"/home/data/*/*.png"),"\n")#加上r让字符串不转义
#获取上级目录的所有.py文件
print (glob.glob(r'../*.py')) #相对路径
glob.iglob
获取一个迭代器( iterator )对象,使用它可以逐个获取匹配的文件路径名。与glob.glob()的区别是:glob.glob同时获取所有的匹配路径,而 glob.iglob一次只获取一个匹配路径。下面是一个简单的例子:
f = glob.iglob(r'../*.py')
print(f)
<generator object iglob at 0x00B9FF80>
for py in f:
print(py)
官方例子
>>> import glob
>>> glob.glob('./[0-9].*')
['./1.gif', './2.txt']
>>> glob.glob('*.gif')
['1.gif', 'card.gif']
>>> glob.glob('?.gif')
['1.gif']
参考及转载:
https://blog.csdn.net/GeorgeAI/article/details/81035422
https://blog.csdn.net/u010472607/article/details/76857493/