我有这个简单的代码:
import subprocess, os
cmd = ['java', '-cp', '/weka.jar', 'weka.classifiers.bayes.NaiveBayes', '-t' ,
'/MyData.arff']
print (' '.join(cmd))
data = subprocess.check_output(cmd)
data = [line.strip().split('\t') for line in data.split(os.linesep)][0:-1]
print (data)
当我运行它时,我收到此错误:
data = [line.strip().split('\t') for line in data.split(os.linesep)][0:-1]
TypeError: a bytes-like object is required, not 'str'.
有谁知道如何解决它?
答案 0 :(得分:1)
默认情况下,subprocess
会将 bytes 作为stdout输出。您不能将'...'
字符串用于剥离或拆分,您需要使用bytes
个对象。
告诉subprocess
将数据解码为您的文本(使用universal_newlines=True
或设置encoding
参数),或使用bytes.splitlines()
拆分文本,以及使用.split(b'\t')
分割每一行。