栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

子进程“ TypeError:需要一个类似字节的对象,而不是'str'”

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

子进程“ TypeError:需要一个类似字节的对象,而不是'str'”

subprocess``bytes
默认情况下返回stdout或stderr流的对象。这意味着您还需要
bytes
在针对这些对象的操作中使用对象。
"Duration"in x
使用
str
对象。使用字节文字(注意
b
前缀):

return [x for x in result.stdout.readlines() if b"Duration" in x]

或先解码数据(如果您知道所使用的编码)(通常是区域设置默认值,但可以为子流程设置

LC_ALL
或更具体的区域设置环境变量):

return [x for x in result.stdout.read().depre(encoding).splitlines(True)        if "Duration" in x]

另一种方法是

subprocess.Popen()
通过将
encoding
参数设置为合适的编解码器来告诉将数据解码为Unipre字符串:

result = subprocess.Popen(    ["ffprobe", filename],    stdout=subprocess.PIPE, stderr = subprocess.STDOUT,    encoding='utf8')

如果进行设置

text=True
(Python
3.7及更高版本,在以前的版本中称为
universal_newlines
),则还可以使用系统默认编解码器(用于
open()
调用的代码)启用解码。在这种模式下,默认情况下管道是行缓冲的。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/641222.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号