pythpn zip解压

Zip文件解压以及TXT的读取

1.对Zip 通过python进行解压,使用的是zipfile库
解压函数是zipfile.ZipFile()
将解压后的文件提取到path1路径使用extractall()函数

import zipfile
path = 'a.zip'
path1 = 'c:/'
f = zipfile.ZipFile(path, 'r')
f.extractall(path1)
f.close()

2.提取某一文件的 . 的前缀
使用re库, 通过findall()来提取前缀

import re
path1 = 'd:/LJ/cs/20190517data/a.txt'
m = re.findall(r'(.+?)\.', path)
print(m)

输出m可以得到

['d:/LJ/cs/20190517data/a']

3.TXT中含有中文时怎么读取
当.txt文件中含有中文的时候,会报错,比如:

path = 'd:\M22.txt'
f1 = open(path, 'r', encoding='utf-8')
a = f1.read()

运行上述的代码会出现错误:

Traceback (most recent call last):
File “<pyshell#2>”, line 1, in
a = f1.read() File “C:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\codecs.py”, line 322, in decode (result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xca in position 7: invalid continuation byte

针对报错的问题,进行了网页答案解决,发现在这方面大家出现的问题都不太一样,所以试着进行了解决,如下,可以解决上述问题:

path = 'd:\M22.txt'
f1 = open(path)
a = f1.read()

但是,又有的时候,如果你直接使用f1.read(path)读取文本的时候,会报错:

path1 = 'd:/FD03.txt'
f1 = open(path1)
a = f1.read()

运行上述代码,会出现这样的错误:
Traceback (most recent call last):
File “<pyshell#5>”, line 1, in
a = f1.read()
UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0xac in position 36: illegal multibyte sequence

这时候需要编码,所以对应的改进是:

f1 = open(path1, encoding='utf-8')
a = f1.read()

4.异常处理
由于我需要对很多歌文本文件进行处理,不能一个一个试,所以使用了异常处理解决上边出现的问题:
异常处理,使用的try: 和except:

import pandas as pd
import os

path1 = 'd:/LJ/9_txt/'
file_list = os.listdir(path1)
for i in file_list:
    print(i)
    try:
        f1 = open(path1 + i, 'r', encoding='utf-8')
        a = f1.read()
        a = a.split('\n')
        f1.close()
    except:
        f1 = open(path1+i)
        a = f1.read()
        f1.close()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值