OSError: [Errno 36]文件名过长 Python包内txt文件pandas读取问题
问题根因
你当前代码触发报错的核心原因是逻辑错误,和操作系统配置无关:
你将librebook.txt的全部内容读取出来赋值给input_file,再把这个内容字符串传给pd.read_csv(),但pd.read_csv()的第一个参数如果传入字符串类型,默认会把它识别为文件路径,而不是CSV内容本身,相当于把整份文件的内容当做路径字符串传入,自然触发文件名过长的报错。
解决方案
两种方案均不需要修改操作系统配置,也不需要调用.readlines()方法,纯代码调整即可解决:
方案1:直接传入文件对象(最简洁)
pd.read_csv原生支持直接传入可读的文件对象,不需要提前读取文件内容,修改后代码如下:
from importlib_resources import open_text import pandas as pd with open_text('package.data', 'librebook.txt') as f: dataset = pd.read_csv(f)
方案2:用StringIO包装已读取的文本内容
如果你的业务逻辑需要先拿到完整文本内容做其他处理,再喂给pandas,可以用Python标准库的io.StringIO把字符串内容包装成类文件对象,pd.read_csv会自动识别它为内容而非路径,修改后代码如下:
from importlib_resources import open_text import pandas as pd from io import StringIO with open_text('package.data', 'librebook.txt') as f: input_file = f.read() dataset = pd.read_csv(StringIO(input_file))
内容的提问来源于stack exchange,提问作者Stackaccount1
相关产品推荐
相关产品推荐

