Python指令碼重定向其輸出時的編碼問題

2021-09-08 16:26:55 字數 631 閱讀 7605

python有乙個比較煩的問題是,同一段程式,裡面有print語句,直接執行時沒有問題,一旦將其輸出設了個重定向,這個指令碼就不正常了,報告unicodeencodeerror

究其原因,是python感知到輸出到控制台時,會從控制台取當前編碼;而重定向後python程式無法得知寫那個檔案該用哪個編碼(不過為啥不用控制台的 值?), 預設就用了ascii (準確地說,是系統預設編碼

sys.getdefaultencoding(),可以在sitecustomize模組裡修改。而python3將預設編 碼改為utf-8了) 。

python - unicodedecodeerror when redirecting to file - stack overflow

解決辦法有兩個:

乙個是剛才提到的修改sitecustomize模組(預設不存在,特意留給使用者定製的),在裡面呼叫

sys.setdefaultcoding('***x')——這個函式python在import site之後就沒有了,應用程式的python**裡是沒法調的

方法二是shell裡設定環境變數

pythonioencoding,設成utf_8或者gbk都可以(只要字符集夠)

printfails - pythoninfo wiki

python輸出重定向

由於考慮到將命令列程式轉成ui程式,原先在命令列中直接輸出的資訊必須輸出到特定介面中,考慮到應該有重定向的功能,baidu了一下,比較簡單,實現 如下,可以先重定向到某個變數,再將其重定向系統並列印出來。usr bin env python coding utf 8 import sys 定義標準輸...

輸入重定向,正確輸出重定向,錯誤輸出重定向

一 標準輸入 stdin a.輸入重定向 標準輸入 作用 將原先鍵盤輸入的內容改由檔案內容代替 root wenwen cat test.txt asdas asdas asdas 按crtl d 退出 將network內容匯入到test.txt中去 root wenwen cat test.txt...

python 如何重定向輸出

在windows和linux終端中,可以用 和 符號將程式輸出重定向到檔案中,那麼在程式內部是否也可以執行相應操作呢?python使用三個io檔案流來管理標準輸入 輸出和錯誤輸出,分別是sys.stdin sys.stdout和sys.stderr 所以,我們要做的僅僅是改變變數的值為目標檔案流,就...