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

在Python中调用PHP脚本,输出为何带有b前缀和单引号?

为什么subprocess执行PHP脚本返回b'Hello'?

这其实是Python subprocess模块的默认行为啦~

当你用subprocess.run()执行外部命令时,默认情况下stdout返回的是字节对象(bytes),所以输出会带b''前缀——这只是Python用来标识字节数据的方式,并不是PHP脚本输出的内容本身。你的PHP脚本确实只输出了Hello,但Python把它当成原始字节流接收了。

解决这个问题很简单,有两种常用方法:

  • 在subprocess.run()中指定encoding参数,直接让结果返回字符串:

    import subprocess
    result = subprocess.run(['php', 'index.php'], stdout=subprocess.PIPE, check=True, encoding='utf-8')
    print(result.stdout)  # 现在会直接输出Hello
    
  • 对返回的字节对象调用decode()方法转换成字符串:

    import subprocess
    result = subprocess.run(['php', 'index.php'], stdout=subprocess.PIPE, check=True)
    print(result.stdout.decode('utf-8'))  # 解码后输出Hello
    

如果遇到编码不确定的情况,还可以用decode('utf-8', errors='ignore')来避免编码错误导致的异常,不过通常使用utf-8就足够适配大多数场景了。

内容的提问来源于stack exchange,提问作者user9767084

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:42:15