【发布时间】:2021-04-27 10:22:46
【问题描述】:
我正在尝试使用 pysftp/Paramiko 通过 SFTP 读取 CSV。我的代码如下所示:
input_conn = pysftp.Connection(hostname, username, password)
file = input_conn.open("Data.csv")
file_contents = list(csv.reader(file))
但是当我这样做时,我收到以下错误:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x96 in position 23: invalid start byte
我知道这意味着文件应该采用 UTF-8 编码,但不是。奇怪的是,如果我下载文件然后使用我的代码打开文件,我可以将编码指定为“macroman”并且不会出错:
with open("Data.csv", "r", encoding="macroman") as csvfile:
file_contents = list(csv.reader(csvfile))
Paramiko 文档说文件的编码在 SFTP 上毫无意义,因为它将所有文件都视为字节 - 但是,如果我使用 Paramiko 打开文件,如何让 Python 的 CSV 模块识别编码?
【问题讨论】:
标签: python csv sftp paramiko pysftp