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

use*_*663 9 python encoding command-line

PEP0263指定了在源文件本身中声明Python源文件的编码的语法.

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

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

我想的是:

$ python --encoding utf-8 myscript.py
Run Code Online (Sandbox Code Playgroud)

甚至:

$ PYTHONSOURCEENCODING=utf-8 python myscript.py
Run Code Online (Sandbox Code Playgroud)

a p*_*a p 3

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

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

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