1. 程式人生 > 程式設計 >解決python3中os.popen()出錯的問題

解決python3中os.popen()出錯的問題

使用程式難免會有出錯的時候,如何從大篇程式碼中找出錯誤,不僅考驗能力,還要考驗小夥們的耐心。辛辛苦苦敲出的程式碼執行不出結果,非常著急是可以理解的。那麼我們在python3中使用os.popen()出錯該怎麼辦?本篇文章小編同樣以錯誤的操作方法為大家進行講解,一起找尋不對的地方吧。

在當前 desktop 目錄下,有如下內容:

desktop $ls
client.py  server.py  中文測試
arcpy.txt  codetest.py  test.py

如上所示:有一箇中文命名的檔案 ----> 中文測試

# -*- coding:utf-8 -*-
# python3.5.1
import os,sys
print (sys.getdefaultencoding()) #系統預設編碼
dir_list = os.listdir()
for li in dir_list:
print (li)

輸出如下:

utf-8
arcpy.txt
client.py
codetest.py
server.py
test.py
中文測試

可以看出預設編碼為 utf-8,os.listdir()命令可以正常輸出中文字元。

在使用 os.popen()時:

# -*- coding:utf-8 -*-
# python3.5.1
import os,sys
print (sys.getdefaultencoding()) #系統預設編碼
dir_list = os.popen('ls','r').read()
for li in dir_list:
print (li)

報錯如下:

utf-8

Traceback (most recent call last):

File "Desktop/codetest.py",line 8,in <module>

dir_list = os.popen('ls','r').read()

File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/encodings/ascii.py",line 26,in decode

return codecs.ascii_decode(input,self.errors)[0]

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe4 in position 76: ordinal not in range(128)

解決:

命令列執行沒有問題,這個是編輯器的事。建議用subprocess

解決python3中os.popen()出錯的問題

到此這篇關於解決python3中os.popen()出錯的問題的文章就介紹到這了,更多相關python3中os.popen()使用出錯怎麼辦內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!