小编Dav*_*vid的帖子

sys.argv作为Python 3k中的字节

由于Python 3k引入了字符串和字节之间的严格区分,因此数组sys.argv中的命令行参数显示为字符串.有时需要将参数视为字节,例如,在传递不需要在Unix中的任何特定字符编码的路径时.

我们来看一个例子吧.下面是一个简短的Python 3k程序argv.py:

import sys

print(sys.argv[1])
print(b'bytes')
Run Code Online (Sandbox Code Playgroud)

当它执行python3.1 argv.py français时产生预期的输出:

法语

b'bytes'

请注意,参数français是我的语言环境编码.但是,当我们以不同的编码传递参数时,我们会得到一个错误:python3.1 argv.py `echo français|iconv -t latin1`

Traceback (most recent call last):
  File "argv.py", line 3, in <module>
    print(sys.argv[1])
  UnicodeEncodeError: 'utf-8' codec can't encode character '\udce7' in position 4: surrogates not allowed
Run Code Online (Sandbox Code Playgroud)

我们如何通过命令行参数将二进制数据传递给Python 3k程序?使用示例是将路径传递给使用其他语言环境的用户的文件.

python string unicode python-3.x

8
推荐指数
2
解决办法
2801
查看次数

标签 统计

python ×1

python-3.x ×1

string ×1

unicode ×1