该
b符号表示的输出
check_process是一个
bytes,而不是一个
str。删除它的最好方法是在对其进行任何进一步的工作之前将输出转换为字符串:
byte_data=subprocess.check_output(["df -k | awk '{print $6}'"],shell=True)str_data = byte_data.depre('utf-8')data_arr=str_data.split()...该
depre方法将处理您在字符串中可能包含的任何unipre。如果您的默认编码(或
awk我想使用的编码)不是
UTF-8,请在上面的示例中替换正确的编码。
解决该问题的一种更好的方法可能是告诉
check_output打开
stdout为文本流。最简单的方法是添加一个
universal_newlines=True参数,该参数将对您当前的语言环境使用默认编码:
str_data = subprocess.check_output(["df -k | awk '{print $6}'"], shell=True, universal_newlines=True)另外,您可以指定一个显式编码:
str_data = subprocess.check_output(["df -k | awk '{print $6}'"], shell=True, encoding='utf-8')在这两种情况下,您都无需解码,因为输出已经是
str而不是
bytes。



