在Python 3中将ascii字符输出到stdout

时间:2016-10-01 00:59:39

标签: python windows python-3.x unicode character-encoding

我有一个名为'xxx.py'的文件,如下所示:

print("a simple string")

当我像这样运行时(Python 3):

python xxx.py >atextfile.txt

我收到了一个unicode文件。

我想要一个ascii文件。

如果尝试打印非ascii字符,我不介意抛出异常。

我可以对输出ascii字符的代码进行哪些简单的更改?

我的搜索结果显示解决方案对于这样一个简单的问题都显得过于冗长。

[编辑]报告我从设置LC_CTYPE中学到的东西:

我在Windows 7上运行。

  1. 在powershell命令行上运行时,我得到一个unicode文件(两个字节/字符)
  2. 在没有设置LC_CTYPE的.bat文件中运行时,我得到一个ascii文件(可能是@jwodder指出的utf-8)。
  3. 在带有LC_CTYPE = ascii set的.bat文件中运行时,我可以设置一个ascii文件(1个字节/字符)。

1 个答案:

答案 0 :(得分:0)

stdout编码由执行python脚本的环境定义,例如:

$ python -c "import sys; print(sys.stdout.encoding)"
UTF-8
$ LC_CTYPE=ascii python -c "import sys; print(sys.stdout.encoding)"
US-ASCII

在运行脚本之前尝试调整环境。您可以通过设置PYTHONIOENCODING环境变量来强制Python的编码值。