Python 中文编码 - .py 文件起始行
Python 中文编码/usr/bin/python2.7Python 文件中如果未指定编码 (中文字符),在执行过程会出现报错。## Created by foreverstrong on 12/27/18## !/usr/bin/pythonprint("你好!")/usr/bin/python2.7 /home/strong/Vehicle_Model_Color_D..
Python 中文编码 - .py 文件起始行
1. /usr/bin/python2.7
Python 文件中如果未指定编码 (中文字符),在执行过程会出现报错。
#!/usr/bin/python
# ============================================================================================
# Name : character_encoding.py
# Author : Yongqiang Cheng
# Version : April 16, 2019
# Copyright : Copyright 2019 ForeverStrong License
# Description : Character Encoding for Linux in Python, Ansi-style
# ============================================================================================
print("你好!")
/usr/bin/python2.7 /home/strong/pyqt5_workspace/character_encoding.py
File "/home/strong/pyqt5_workspace/character_encoding.py", line 11
SyntaxError: Non-ASCII character '\xe4' in file /home/strong/pyqt5_workspace/character_encoding.py on line 11, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
Process finished with exit code 1
#!/usr/bin/python
#!/usr/bin/python3
Python 中默认的编码格式是 ASCII 格式,没修改编码格式时无法正确打印汉字,所以在读取中文时会报错。
在文件开头加入 # -*- coding: UTF-8 -*-
或者 #coding=utf-8
解决问题。必须放在文件开头,#coding=utf-8
的 = 号两边不要空格。
1.1. example 1
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# ============================================================================================
# Name : character_encoding.py
# Author : Yongqiang Cheng
# Version : April 16, 2019
# Copyright : Copyright 2019 ForeverStrong License
# Description : Character Encoding for Linux in Python, Ansi-style
# ============================================================================================
print("你好!")
/usr/bin/python2.7 /home/strong/pyqt5_workspace/character_encoding.py
你好!
Process finished with exit code 0
1.2. example 2
指定编码必须放在文件开头。
#!/usr/bin/python
# ============================================================================================
# Name : character_encoding.py
# Author : Yongqiang Cheng
# Version : April 16, 2019
# Copyright : Copyright 2019 ForeverStrong License
# Description : Character Encoding for Linux in Python, Ansi-style
# ============================================================================================
# -*- coding: UTF-8 -*-
print("你好!")
/usr/bin/python2.7 /home/strong/pyqt5_workspace/character_encoding.py
File "/home/strong/pyqt5_workspace/character_encoding.py", line 13
SyntaxError: Non-ASCII character '\xe4' in file /home/strong/pyqt5_workspace/character_encoding.py on line 13, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
Process finished with exit code 1
2. /usr/bin/python3.5
2.1. example 1
#!/usr/bin/python3
# -*- coding: UTF-8 -*-
# ============================================================================================
# Name : character_encoding.py
# Author : Yongqiang Cheng
# Version : April 16, 2019
# Copyright : Copyright 2019 ForeverStrong License
# Description : Character Encoding for Linux in Python, Ansi-style
# ============================================================================================
print("你好!")
/usr/bin/python3.5 /home/strong/pyqt5_workspace/character_encoding.py
你好!
Process finished with exit code 0
2.2. example 2
#!/usr/bin/python3
# ============================================================================================
# Name : character_encoding.py
# Author : Yongqiang Cheng
# Version : April 16, 2019
# Copyright : Copyright 2019 ForeverStrong License
# Description : Character Encoding for Linux in Python, Ansi-style
# ============================================================================================
print("你好!")
/usr/bin/python3.5 /home/strong/pyqt5_workspace/character_encoding.py
你好!
Process finished with exit code 0
Python 3.x 源码文件默认使用 UTF-8 编码,所以可以正常解析中文,无需指定 UTF-8 编码。
strong@foreverstrong:~/pyqt5_workspace$ python3 character_encoding.py
你好!
strong@foreverstrong:~/pyqt5_workspace$
3. 脚本第一行 #!/usr/bin/python
与 #!/usr/bin/python3
#!/usr/bin/python
#!/usr/bin/python3
脚本语言的第一行,只对 Linux/Unix 用户适用,用来指定脚本用什么解释器来执行。
包含 #!/usr/bin/python
之后,加上执行权限后,可以直接用 ./
执行。不然无法执行,因为找不到 Python 解释器。#!/usr/bin/python
是告诉操作系统执行这个脚本的时候,调用 /usr/bin
下的 python
解释器。
#!/usr/bin/env python
这种用法是为了防止操作系统用户没有将 Python 装在默认的 /usr/bin
路径里。当系统看到这一行的时候,首先会到 env 设置里查找 Python 的安装路径,再调用对应路径下的解释器程序完成操作。
#!/usr/bin/python
相当于固定了 Python 路径。#!/usr/bin/env python
会去环境设置寻找 Python 目录,可以增强代码的可移植性,推荐这种写法。
- 如果调用 Python 脚本时,使用:
python script.py
#!/usr/bin/python
被忽略,等同于注释。
- 如果调用 Python 脚本时,使用:
./script.py
#!/usr/bin/python
指定解释器的路径,shell 脚本中在第一行也有类似的声明。
所有 Python 程序的第一行应该是 #!
行,它告诉计算机你想让 Python 来执行这个程序,但剩下的内容取决于操作系统。
- 在 Windows 上,第一行是
#!python3
。 - 在 OS X,第一行是
#!/usr/bin/env python3
。 - 在 Linux 上,第一行是
#!/usr/bin/python3
。
没有 #!
行,你也能从 IDE 运行 Python 脚本,但从命令行运行它们就需要这一行
3.1. example 1
#!/usr/bin/python3
# ============================================================================================
# Name : character_encoding.py
# Author : Yongqiang Cheng
# Version : April 16, 2019
# Copyright : Copyright 2019 ForeverStrong License
# Description : Character Encoding for Linux in Python, Ansi-style
# ============================================================================================
print("你好!")
strong@foreverstrong:~/pyqt5_workspace$ ll
total 24
drwxrwxr-x 3 strong strong 4096 Apr 29 19:41 ./
drwxr-xr-x 96 strong strong 4096 Apr 29 17:49 ../
-rw-rw-r-- 1 strong strong 451 Apr 29 19:41 character_encoding.py
strong@foreverstrong:~/pyqt5_workspace$
strong@foreverstrong:~/pyqt5_workspace$ ./character_encoding.py
bash: ./character_encoding.py: Permission denied
strong@foreverstrong:~/pyqt5_workspace$
strong@foreverstrong:~/pyqt5_workspace$ sudo chmod a+x character_encoding.py
[sudo] password for strong:
strong@foreverstrong:~/pyqt5_workspace$
strong@foreverstrong:~/pyqt5_workspace$ ll
total 24
drwxrwxr-x 3 strong strong 4096 Apr 29 19:41 ./
drwxr-xr-x 96 strong strong 4096 Apr 29 17:49 ../
-rwxrwxr-x 1 strong strong 451 Apr 29 19:41 character_encoding.py*
strong@foreverstrong:~/pyqt5_workspace$
strong@foreverstrong:~/pyqt5_workspace$ ./character_encoding.py
你好!
strong@foreverstrong:~/pyqt5_workspace$
3.2. example 1
# ============================================================================================
# Name : character_encoding.py
# Author : Yongqiang Cheng
# Version : April 16, 2019
# Copyright : Copyright 2019 ForeverStrong License
# Description : Character Encoding for Linux in Python, Ansi-style
# ============================================================================================
print("你好!")
strong@foreverstrong:~/pyqt5_workspace$ ll
total 24
drwxrwxr-x 3 strong strong 4096 Apr 29 20:00 ./
drwxr-xr-x 96 strong strong 4096 Apr 29 17:49 ../
-rwxrwxr-x 1 strong strong 431 Apr 29 20:00 character_encoding.py*
strong@foreverstrong:~/pyqt5_workspace$
strong@foreverstrong:~/pyqt5_workspace$ ./character_encoding.py
./character_encoding.py: line 9: syntax error near unexpected token `"你好!"'
./character_encoding.py: line 9: `print("你好!")'
strong@foreverstrong:~/pyqt5_workspace$
strong@foreverstrong:~/pyqt5_workspace$ python3 character_encoding.py
你好!
strong@foreverstrong:~/pyqt5_workspace$
4. .py
文件起始行
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# ============================================================================================
# Name : character_encoding.py
# Author : Yongqiang Cheng
# Version : April 16, 2019
# Copyright : Copyright 2019 ForeverStrong License
# Description : Character Encoding for Linux in Python, Ansi-style
# ============================================================================================
#!/usr/bin/python3
# -*- coding: UTF-8 -*-
# ============================================================================================
# Name : character_encoding.py
# Author : Yongqiang Cheng
# Version : April 16, 2019
# Copyright : Copyright 2019 ForeverStrong License
# Description : Character Encoding for Linux in Python, Ansi-style
# ============================================================================================
#!/usr/bin/python3
# Character Encoding: UTF-8
# ============================================================================================
# Name : character_encoding.py
# Author : Yongqiang Cheng
# Version : April 16, 2019
# Copyright : Copyright 2019 ForeverStrong License
# Description : Character Encoding for Linux in Python, Ansi-style
# ============================================================================================
References
[1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/
更多推荐
所有评论(0)