Python 3.9 – 使用 pandas 读取 google sheet 文件会导致回溯错误

Posted

技术标签:

【中文标题】Python 3.9 – 使用 pandas 读取 google sheet 文件会导致回溯错误【英文标题】:Python 3.9 – reading google sheets file using pandas results in traceback error 【发布时间】:2021-04-30 16:42:20 【问题描述】:

我正在尝试使用 pandas 从公开可用的谷歌电子表格中读取数据。

我一直在关注this tutorial,但在运行我的代码之后:

#!/Library/Frameworks/Python.framework/Versions/3.9/bin/python3
import pandas as pd

#  Import data from Google Sheets


sheet_id = "1ierEhD6gcq51HAm433knjnVwey4ZE5DCnu1bW7PRG3E"

df = pd.read_csv(f"https://docs.google.com/spreadsheets/d/sheet_id/export?forat=csv")

print(df)

我收到这些回溯错误:

Traceback(最近一次调用最后一次):文件 "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/urllib/request.py", 第 1342 行,在 do_open h.request(req.get_method(), req.selector, req.data, headers, File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/http/client.py", 第 1255 行,应要求提供 self._send_request(method, url, body, headers, encode_chunked) 文件 "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/http/client.py", 第 1301 行,在 _send_request 中 self.endheaders(body, encode_chunked=encode_chunked) 文件“/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/http/client.py”, 第 1250 行,在端头中 self._send_output(message_body, encode_chunked=encode_chunked) 文件 "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/http/client.py", 第 1010 行,在 _send_output 中 self.send(msg) 文件“/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/http/client.py”, 第 950 行,在发送中 self.connect() 文件“/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/http/client.py”, 第 1424 行,连接中 self.sock = self._context.wrap_socket(self.sock,文件“/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/ssl.py”, 第 500 行,在 wrap_socket 返回self.sslsocket_class._create(文件“/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/ssl.py”, 第 1040 行,在 _create self.do_handshake() 文件“/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/ssl.py”, 第 1309 行,在 do_handshake 中 self._sslobj.do_handshake() ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败:无法获取 本地颁发者证书 (_ssl.c:1123)

在处理上述异常的过程中,又发生了一个异常:

Traceback(最近一次调用最后一次): df = pd.read_csv(文件“/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pandas/io/parsers.py”, 第 605 行,在 read_csv 返回_read(filepath_or_buffer,kwds)文件“/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pandas/io/parsers.py”, 第 457 行,在 _read parser = TextFileReader(filepath_or_buffer, **kwds) 文件“/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pandas/io/parsers.py”, 第 814 行,在 init 中 self._engine = self._make_engine(self.engine) 文件 "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pandas/io/parsers.py", 第 1045 行,在 _make_engine return mapping[engine](self.f, **self.options) # type: ignore[call-arg] File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pandas/io/parsers.py", 第 1862 行,在 init 中 self._open_handles(src, kwds) 文件“/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pandas/io/parsers.py”, 第 1357 行,在 _open_handles 中 self.handles = get_handle(文件“/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pandas/io/common.py”, 第 558 行,在 get_handle 中 ioargs = _get_filepath_or_buffer(文件“/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pandas/io/common.py”, 第 288 行,在 _get_filepath_or_buffer req = urlopen(filepath_or_buffer) 文件“/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pandas/io/common.py”, 第 194 行,在 urlopen 中 返回 urllib.request.urlopen(*args, **kwargs) 文件“/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/urllib/request.py”, 第 214 行,在 urlopen 返回 opener.open(url, data, timeout) 文件 "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/urllib/request.py", 第 517 行,开放 response = self._open(req, data) 文件“/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/urllib/request.py”, 第 534 行,在 _open 结果 = self._call_chain(self.handle_open, 协议, 协议 + 文件 "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/urllib/request.py", 第 494 行,在 _call_chain 结果 = func(*args) 文件“/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/urllib/request.py”, 第 1385 行,在 https_open return self.do_open(http.client.HTTPSConnection, req, File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/urllib/request.py", 第 1345 行,在 do_open 中 引发 URLError(err) urllib.error.URLError:

有人可以帮帮我吗?

编辑: @Code-Apprentice 的回答部分解决了我的问题,现在我只收到这些错误:

Traceback (most recent call last):
    df = pd.read_csv(
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pandas/io/parsers.py", line 605, in read_csv
    return _read(filepath_or_buffer, kwds)
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pandas/io/parsers.py", line 457, in _read
    parser = TextFileReader(filepath_or_buffer, **kwds)
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pandas/io/parsers.py", line 814, in __init__
    self._engine = self._make_engine(self.engine)
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pandas/io/parsers.py", line 1045, in _make_engine
    return mapping[engine](self.f, **self.options)  # type: ignore[call-arg]
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pandas/io/parsers.py", line 1893, in __init__
    self._reader = parsers.TextReader(self.handles.handle, **kwds)
  File "pandas/_libs/parsers.pyx", line 518, in pandas._libs.parsers.TextReader.__cinit__
  File "pandas/_libs/parsers.pyx", line 620, in pandas._libs.parsers.TextReader._get_header
  File "pandas/_libs/parsers.pyx", line 814, in pandas._libs.parsers.TextReader._tokenize_rows
  File "pandas/_libs/parsers.pyx", line 1943, in pandas._libs.parsers.raise_parser_error
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc3 in position 54: invalid continuation byte

【问题讨论】:

这能回答你的问题吗? certificate verify failed: unable to get local issuer certificate @Code-Apprentice 部分地,大部分错误都消失了,但不是全部。我将在我的帖子中添加一个编辑。 为了将来参考,您应该在解决当前错误时接受链接的问题,然后发布有关新错误的新问题,而不是编辑您的问题以完全替换原始错误消息。这有助于构建一个其他人将来可以找到的库,以帮助解决类似的问题。 【参考方案1】:

您的参数中有错字,forat 而不是format。虽然我不确定这是否是问题所在,但这可能并不好。

【讨论】:

以上是关于Python 3.9 – 使用 pandas 读取 google sheet 文件会导致回溯错误的主要内容,如果未能解决你的问题,请参考以下文章

python pandas读取excel-Python使用Pandas读写EXCEL文件教程

python使用pandas读取excel

使用 pandas Python (pandas.io.parsers.TextFileReader) 从文件中读取数据时出现问题

使用 numpy / pandas 读取 Python 中 CSV 文件的最后 N 行

使用 numpy / pandas 读取 Python 中 CSV 文件的最后 N 行

python Excel工作表使用pandas读取