widgets.FileUpload - 读取上传的 CSV
Posted
技术标签:
【中文标题】widgets.FileUpload - 读取上传的 CSV【英文标题】:widgets.FileUpload - Read the uploaded CSV 【发布时间】:2021-07-28 17:59:53 【问题描述】:我正在使用widgets.FileUpload
将 CSV 上传到 jupyter 并阅读它。我正在使用下面哟上传。
input_file = widgets.FileUpload(
accept='.csv', # Accepted file extension e.g. '.txt', '.pdf', 'image/*', 'image/*,.pdf'
multiple=False # True to accept multiple files upload else False
)
input_file
我已经上传了文件,当我打印print(input_file.value)
时,我可以看到数据。
但是当我阅读data = pd.read_csv(input_file.value, encoding = "ISO-8859-1")
时,我看到以下错误
ValueError: Invalid file path or buffer object type: <class 'dict'>
请指点。
【问题讨论】:
【参考方案1】:input_file.value
通常是一个字典元组,因此您需要访问实际的文件数据。如果您只上传了一个文件,这可能在input_file.value[0]['content']
下。试试这个:
import codecs
uploaded_file = list(input_file.value.values())[0]
csv_text = codecs.decode(uploaded_file.content)
data = pd.read_csv(csv_text)
更多信息请看这里:https://ipywidgets.readthedocs.io/en/latest/examples/Widget%20List.html#File-Upload
【讨论】:
谢谢,我试过了,我看到Key Error: 0
请分享完整的错误,以及你在运行input_file.value
时看到的内容
@24 - KeyError Traceback (most recent call last) <ipython-input-73-1dbe6fbd8f83> in <module> 1 import codecs ----> 2 uploaded_file = input_file.value[0] 3 csv_text = codecs.decode(uploaded_file.content) 4 data = pd.read_csv(csv_text) KeyError: 0
input_file.value
其巨大的 CSV 前几行看起来像 'Test.csv': 'metadata': 'name': 'Test.csv', 'type': 'application/vnd.ms-excel', 'size': 198933, 'lastModified': 1619167436578, 'content': b'ColumnName\r\nRow1 data\r\nTo close Open CRQ\'s
该结构与文档的预期不符。你能检查你的 ipywidgets 版本吗(widgets.__version__
)以上是关于widgets.FileUpload - 读取上传的 CSV的主要内容,如果未能解决你的问题,请参考以下文章