当前位置: 移动技术网 > IT编程>脚本编程>Python > subprocess之check_out用法

subprocess之check_out用法

2019年12月12日  | 移动技术网IT编程  | 我要评论

艳鬼山坟高清,音箱diy论坛,命运符号

在python3中使用subprocess的check_out方法时,因为该输出为byte类型,所以如果要查看具体的内容时需要进行转码,如果转码不对话,会影响内容输出的可读性,如下:

#1,输出解码不带参数

 1 # -*- coding:utf-8 -*-
 2 
 3 import subprocess
 4 cmd = r"ping www.baidu.com"
 5 result = subprocess.check_output(cmd)
 6 print(result.decode())  # decode中不带参数,默认是以utf-8解码
 7 
 8 
 9 输出报错:
10 traceback (most recent call last):
11   file "e:/debug.py", line 12, in <module>
12     print(result.decode())  # decode中不带参数
13 unicodedecodeerror: 'utf-8' codec can't decode byte 0xd5 in position 2: invalid continuation byte
14 
15 process finished with exit code 1

 

#2,输出解码带上 unicode_escape 参数,会显示乱码

 1 # -*- coding:utf-8 -*-
 2 
 3 import subprocess
 4 cmd = r"ping www.baidu.com"
 5 result = subprocess.check_output(cmd)
 6 print(result.decode("unicode_escape"))  # decode中带参数 unicode_escape
 7 
 8 
 9 输出显示乱码如下:
10 õýôú ping www.a.shifen.com [14.215.177.39] ¾ßóð 32 ×ö½úµäêý¾ý:
11 à´×ô 14.215.177.39 µä»ø¸´: ×ö½ú=32 ê±¼ä=6ms ttl=47
12 à´×ô 14.215.177.39 µä»ø¸´: ×ö½ú=32 ê±¼ä=6ms ttl=47
13 à´×ô 14.215.177.39 µä»ø¸´: ×ö½ú=32 ê±¼ä=6ms ttl=47
14 à´×ô 14.215.177.39 µä»ø¸´: ×ö½ú=32 ê±¼ä=6ms ttl=47
15 
16 14.215.177.39 µä ping í³¼æðåï¢:
17     êý¾ý°ü: òñ·¢ëí = 4£¬òñ½óêõ = 4£¬¶ªê§ = 0 (0% ¶ªê§)£¬
18 íù·µðð³ìµä¹à¼æê±¼ä(òôºáãë¥î»):
19     ×î¶ì = 6ms£¬× = 6ms£¬æ½¾ù = 6ms
20 
21 
22 process finished with exit code 0

 

#3、输出解码带上 gbk 参数,显示正常

 1 # -*- coding:utf-8 -*-
 2 
 3 import subprocess
 4 cmd = r"ping www.baidu.com"
 5 result = subprocess.check_output(cmd)
 6 print(result.decode("gbk"))  # decode中带参数 gbk
 7 
 8 
 9 输出显示正常如下:
10 正在 ping www.a.shifen.com [14.215.177.39] 具有 32 字节的数据:
11 来自 14.215.177.39 的回复: 字节=32 时间=7ms ttl=47
12 来自 14.215.177.39 的回复: 字节=32 时间=6ms ttl=47
13 来自 14.215.177.39 的回复: 字节=32 时间=7ms ttl=47
14 来自 14.215.177.39 的回复: 字节=32 时间=7ms ttl=47
15 
16 14.215.177.39 的 ping 统计信息:
17     数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
18 往返行程的估计时间(以毫秒为单位):
19     最短 = 6ms,最长 = 7ms,平均 = 6ms
20 
21 
22 process finished with exit code 0

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网