Python 3.x Python:从二进制zipfile读入csv
旧的Python 3.x Python:从二进制zipfile读入csv,python-3.x,Python 3.x,旧的python 2.7包含了有效的代码: import zipfile import csv myzip = zipfile.ZipFile('archive.zip') csv_data = csv.reader(myzip.open('db_file.csv', 'r', 'password'), delimiter=',') for rowData in csv_data: ... 我需要使用python3.5 csv.reader现在需要密码作为字节,而不是旧字符串->添加b'
python 2.7
包含了有效的代码:
import zipfile
import csv
myzip = zipfile.ZipFile('archive.zip')
csv_data = csv.reader(myzip.open('db_file.csv', 'r', 'password'), delimiter=',')
for rowData in csv_data:
...
我需要使用python3.5
csv.reader
现在需要密码作为字节,而不是旧字符串->添加b'password'
因此,它返回csv\u数据
也作为字节。csv.reader
正在等待字符串。是否有一些“优雅”或“开箱即用”的方法将字节转换为字符串直接转换为csv,或者我是否必须手动使用
line.decode('ascii')
对每个字符串进行迭代?(我用这种方法从同一个存档文件中创建了一个简单的txt文件,并使用了密码)使用io.TextIOWrapper
如果您有加密的文件,您可能需要对密码进行编码,但句柄是通过TextIOWrapper
动态解码的。您可能还需要将编码调整为您的文件所使用的编码
例如,这适用于我的简单csv
文件
import zipfile
import csv
import io
myzip = zipfile.ZipFile('archive.zip')
with io.TextIOWrapper(myzip.open('db_file.csv', 'r'), encoding='ascii') as z:
csv_data = csv.reader(z, delimiter=',')
for rowData in csv_data:
...
伟大的这正是我需要的。非常感谢你。