Python中subprocess.check_output函数返回类型确认及处理
subprocess.check_output 返回值类型说明
subprocess.check_output的返回值不是始终为字符串,它的类型取决于调用时的参数设置:
默认情况:返回字节串(bytes)
默认不指定编码相关参数时,函数返回的是字节串类型,不是字符串。比如执行简单命令:
import subprocess output = subprocess.check_output(["echo", "test"]) print(type(output)) # 输出 <class 'bytes'>
处理方式:调用decode()方法把字节串转成字符串,通常用utf-8编码:
str_output = output.decode("utf-8") # 或者用系统默认编码,直接调用decode() str_output = output.decode()
指定编码参数:返回字符串(str)
如果调用时指定encoding参数,或者设置text=True(Python3.7及以上推荐)、universal_newlines=True(兼容旧版本),返回值就是字符串类型:
import subprocess # 方式1:指定encoding output1 = subprocess.check_output(["echo", "test"], encoding="utf-8") print(type(output1)) # 输出 <class 'str'> # 方式2:text=True(Python3.7+) output2 = subprocess.check_output(["echo", "test"], text=True) print(type(output2)) # 输出 <class 'str'> # 方式3:universal_newlines=True(兼容旧版Python) output3 = subprocess.check_output(["echo", "test"], universal_newlines=True) print(type(output3)) # 输出 <class 'str'>
特殊情况:空输出
如果执行的命令没有任何输出,返回的是b''(默认字节串模式)或者''(字符串模式),处理逻辑和上面一致即可。
内容的提问来源于stack exchange,提问作者CLAUDIA OTERO
相关产品推荐
相关产品推荐

