从命令行指定Python源文件编码

时间:2015-05-18 08:49:36

标签: python encoding command-line

here指定在源文件本身内声明Python源文件编码的语法。

是否可以从命令行指定编码?

或者有没有理由说这可能是不受欢迎的?

我想的是:

$ python --encoding utf-8 myscript.py

甚至:

$ PYTHONSOURCEENCODING=utf-8 python myscript.py

2 个答案:

答案 0 :(得分:3)

这是一个hack,并不是你想要的,它不适用于没有sed的系统,但你可以将编码行添加到任何python脚本中使用sed '1s/^/# -*- coding: utf-8 -*-\n/' script.py | python

为了使其更通用,您可以在.bashrc或配置文件中定义一个函数。

顺便说一下,我认为首先没有实现的原因是编码是并且应该被认为是每个文件本身的属性,而不是产生线程的调用。存在文件编码和进程产生的概念空间是完全不同的,至少在我看来。

答案 1 :(得分:1)

虽然可能存在此功能可能有用的特殊用例,但我认为这可能令人困惑。

执行Python脚本时,可能有2种不同的编码:

  • 源脚本编码,可以通过PEP0263
  • 在脚本本身中定义
  • 可以通过环境变量定义的环境编码

前者在脚本中是静态的,它的唯一用途是允许程序员在litteral字符串中使用非ASCII字符

后者应该用于IO。它可能会在脚本的不同运行中发生变化。

如果要在命令行(或通过环境变量)传递脚本编码,则会增加本地运行时系统编码的混淆。