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

我一直在使用用户定义的功能来打开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 pd


def 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 urlopen

except ImportError:

    from urllib2 import urlopen

from io import BytesIO

import zipfile


final_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文件。


缥缈止盈
浏览 208回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python