为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用python在zip中打开CSV中的csv?

如何使用python在zip中打开CSV中的csv?

缥缈止盈 2021-04-05 13:09:57
我一直在使用用户定义的功能来打开ZIP文件中包含的CSV文件,这对我来说一直很好。当它们保存在Python的.zip文件中时,如何从网址中抓取.csv文件?现在,我正在尝试打开包含在另一个ZIP中的ZIP中的CSV文件,并且遇到了一些麻烦。我没有收到此错误,而不是从CSV获得数据帧的预期输出:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xfd in position 0: invalid start byte哪种方式有意义,因为我正在尝试使用以下方式打开一个zip文件 read_csv()import pandas as pddef fetch_multi_csv_zip_from_url(url, filenames=(), *args, **kwargs):    assert kwargs.get('compression') is None    req = urlopen(url)    zip_file = zipfile.ZipFile(BytesIO(req.read()))    if filenames:        names = zip_file.namelist()        for filename in filenames:            if filename not in names:                raise ValueError(                    'filename {} not in {}'.format(filename, names))    else:        filenames = zip_file.namelist()    return {name: pd.read_csv(zip_file.open(name), *args, **kwargs)            for name in filenames}try:    from urllib.request import urlopenexcept ImportError:    from urllib2 import urlopenfrom io import BytesIOimport zipfilefinal_links_list =['http://www.nemweb.com.au/REPORTS/ARCHIVE/Dispatch_SCADA/PUBLIC_DISPATCHSCADA_20170523.zip', 'http://www.nemweb.com.au/REPORTS/ARCHIVE/Dispatch_SCADA/PUBLIC_DISPATCHSCADA_20170524.zip']l = len(final_links_list)for j in range(0,l):    print(j)    dfs = fetch_multi_csv_zip_from_url(final_links_list[j])这是我一直在使用的代码,我认为我必须更改以以下内容开头的行:return {name: pd.read_csv(zip_file.open(name)因为它不再返回csv文件,而是zip文件。
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 207 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信