subprocess之check_out用法


在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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM