这给我带来了巨大的麻烦。我的代码:
import subprocess
proc = subprocess.Popen("php /var/scripts/data.php", shell=True, stdout=subprocess.PIPE)
scriptresponse = proc.stdout.read()
print (scriptresponse)
输出:
b'January \ N'
我尝试scriptresponse.replace ('\n', '')
但失败了:
TypeError:'str'不支持缓冲区接口
如何从b
中移除\n
和scriptresponse
,以便输出如下所示:
一月
答案 0 :(得分:1)
尝试将universal_newlines=True
作为参数添加到Popen
来电。
如docs中所述:
如果 universal_newlines 是
True
,文件对象stdin,stdout和stderr将按通用换行模式打开为文本流,如上面常用参数中所述,否则它们将打开为二进制流。
现在你有一个二进制字符串(由b
表示)。如果仍有尾随换行符,请在字符串上使用rstrip()
方法删除尾随字符。