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的主要内容,如果未能解决你的问题,请参考以下文章

如何在 jupyter 实验室中使用 FileUpload 小部件?

java web开发,上传图片并读取

webhdfs上传与读取文件

读取图片上传响应

node批量读取本地图片并上传

用FileUpLoad控件上传图片后,如何将读取出的图片路径存储下来?