Ale*_*lex 30 python unicode console
我有一个python脚本将unicode输出到控制台,我想将它重定向到一个文件.显然,python中的重定向过程涉及将输出转换为字符串,因此我无法解码unicode字符.
那么,有没有办法重定向到UTF-8编码的文件?
unu*_*tbu 32
当打印到控制台时,Python会查看sys.stdout.encoding以确定在打印之前用于编码unicode对象的编码.
将输出重定向到文件时,sys.stdout.encoding为None,因此Python2默认为ascii编码.(相反,Python3默认为utf-8.)这通常会在打印unicode时导致异常.
您可以通过在打印前自己显式编码unicode来避免错误:
print (unicode_obj.encode('utf-8'))
Run Code Online (Sandbox Code Playgroud)
或者您可以重新定义sys.stdout所有输出编码在utf-8:
import sys
import codecs
sys.stdout=codecs.getwriter('utf-8')(sys.stdout)
print(unicode_obj)
Run Code Online (Sandbox Code Playgroud)
Mar*_*nen 14
PYTHONIOENCODING在将python脚本重定向到文件之前,将环境变量设置为所需的编码.然后您将不必修改原始脚本.确保也写入Unicode字符串,否则PYTHONIOENCODING将无效.如果您编写字节字符串,则字节将按原样发送到终端(或重定向文件).
在Linux下,您可以使用tee并将stderr重定向到/ dev/null.
python script.py 2>/dev/null | tee filename.txt
Run Code Online (Sandbox Code Playgroud)
您也不需要修改Python脚本.
| 归档时间: |
|
| 查看次数: |
6246 次 |
| 最近记录: |