python - 在 "OS X"上使用 Python ArgParse 的 UTF-8 STDIN+STDOUT

标签 python macos python-2.7 osx-lion argparse

argparse documentation展示了一种将文件参数默认为 stdin/stdout 的方法,文本编码默认为 utf-8

>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('infile', nargs='?', type=argparse.FileType('r'),
...                     default=sys.stdin)
>>> parser.add_argument('outfile', nargs='?', type=argparse.FileType('w'),
...                     default=sys.stdout)
>>> parser.parse_args([])
Namespace(infile=<_io.TextIOWrapper name='<stdin>' encoding='UTF-8'>,
          outfile=<_io.TextIOWrapper name='<stdout>' encoding='UTF-8'>)

然而,在此 OS X (10.7.5) 系统上,此代码产生 <stdin> <stdout>使用 ascii 编解码器。例如,如果我的输出流包含中文或斯堪的纳维亚字符,它们将在终端上正常显示,但如果我将标准输出重定向到文件,则会触发 ascii 编解码器错误。有没有人找到解决这个问题的路线?

(直接从 Python 代码编写 utf-8 文件不是问题——我正在使用 codecs.open(str_path, "w", 'UTF-8') )

最佳答案

您正在阅读 Python 3 文档。在这里尝试 Python 2 .

此外,您的应用可能需要调用 setlocale() .

关于python - 在 "OS X"上使用 Python ArgParse 的 UTF-8 STDIN+STDOUT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13451264/

相关文章:

python - 使用 SQLAlchemy Core 更新连接表

python - SQLAlchemy db.create_all() 错误,未创建数据库

python-2.7 - 如何使用 PyAutoGUI 检测按键事件?

python - 使用python在MySQL中添加数据

python - cwd的字符串变量

python - Unittest 和 doctest,如何使我的文件可调用?

python - 如何从python中的阿拉伯字符串中删除英文文本?

macos - 如何禁用 NSCollectionView 中的选择矩形绘制?

macos - 我可以在 Mac 终端中进行 gedit 操作吗

macos - 需要将 docker 从一台 mac 移动到另一台 mac