You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pd.read_csv运行报错bytes-like object is required, not 'str'问题咨询

问题原因
  • 报错的根因是参数类型不匹配:subprocess.check_output()默认返回字节类型结果,你调用.decode('utf-8')后已经将其转换为字符串,但io.BytesIO()仅支持接收字节类对象作为输入,传入字符串就会触发*bytes-like object is required, not 'str'*错误。
可行解决方案

提供两种可直接运行的修改方案:

方案1:保留BytesIO,去掉decode步骤

不对返回结果做解码,直接将原始字节传入io.BytesIO:

import subprocess
import pandas as pd
import io

validationColumns='column1|column2'
headerColumns = validationColumns.split("|")
# 移除末尾的.decode('utf-8'),保留原始字节格式
rawData = subprocess.check_output( 'sshpass -p \'pass\' ssh -o StrictHostKeyChecking=no user tail -n +1 /var/prod/archive/new.txt | awk \'NR==1, NR==35\'', shell=True)
df = pd.read_csv(io.BytesIO(rawData), encoding='utf8', sep='|', usecols=headerColumns, quotechar="~")

方案2:保留decode步骤,改用StringIO

如果业务需要先拿到解码后的字符串做其他处理,可以把io.BytesIO替换为适配字符串输入的io.StringIO:

import subprocess
import pandas as pd
import io

validationColumns='column1|column2'
headerColumns = validationColumns.split("|")
rawData = subprocess.check_output( 'sshpass -p \'pass\' ssh -o StrictHostKeyChecking=no user tail -n +1 /var/prod/archive/new.txt | awk \'NR==1, NR==35\'', shell=True).decode('utf-8')
# 替换io.BytesIO为io.StringIO,无需额外指定encoding参数
df = pd.read_csv(io.StringIO(rawData), sep='|', usecols=headerColumns, quotechar="~")

额外提示:代码中明文填写ssh密码存在泄露风险,生产环境建议配置ssh密钥实现免密登录,避免明文写密码。

内容的提问来源于stack exchange,提问作者kaviya .P

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.21 20:27:03