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

Python解析Bash输出时如何去除b'前缀?

Python写入文件出现b'前缀的原因及解决办法

原因分析

  1. 你的exec_command函数返回的是三元组:(返回码, 标准输出bytes, 标准错误bytes),但你直接把整个元组赋值给了ffgrading_json。
  2. Python中bytes类型的字符串表示自带b'...'标识,当你调用str(ffgrading_json)把整个元组转成字符串时,就会把这个标识也包含进去,最终写入文件后就出现了b'前缀。

解决步骤

1. 正确提取标准输出内容

调用exec_command时,解构返回的元组,只取出标准输出部分:

# 用下划线忽略不需要的返回码和标准错误
_, ffgrading_stdout, _ = exec_command(f'{options["path_ffprobe"]} -loglevel quiet -print_format json -read_intervals "%+#2" -select_streams v:0 -show_entries side_data "{path}" | egrep -m 1 -A 10 "Mastering display metadata" | grep -v "Mastering display metadata"|tr -d "[:space:]"| tr -d "\n"')

2. 将二进制输出解码为字符串

把bytes类型的输出解码成普通UTF-8字符串:

ffgrading_str = ffgrading_stdout.decode('utf-8')

3. 写入文件

直接写入解码后的字符串,无需再用str()转换:

with open('/tmp/grading.json', 'w') as f:
    f.write(ffgrading_str)

简化版代码

可以把步骤合并,减少代码量:

_, stdout, _ = exec_command(f'{options["path_ffprobe"]} -loglevel quiet -print_format json -read_intervals "%+#2" -select_streams v:0 -show_entries side_data "{path}" | egrep -m 1 -A 10 "Mastering display metadata" | grep -v "Mastering display metadata"|tr -d "[:space:]"| tr -d "\n"')
with open('/tmp/grading.json', 'w') as f:
    f.write(stdout.decode('utf-8'))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 11:20:35