最近在帮日本写个项目,快结项了,他们要求全部 py 文件头加上:# -- coding: utf-8 -- 。。。。。。 我没解释,直接就苦逼慢慢改了。
我理解他们对编码的严谨,但是都 python3 了,,,这有必要吗?我觉得是多余的。你们觉得呢?
1
congeec 2019-07-12 10:23:30 +08:00 via iPhone 7
难道你是手动敲的?
|
2
neroxps 2019-07-12 10:25:38 +08:00
编码严谨 711 不服
|
3
newGamingLife 2019-07-12 10:26:02 +08:00
@congeec 就算是 copy 不也得一个个文件 copy 吗
|
5
janxin 2019-07-12 10:28:43 +08:00
这个不是自动加就好了么...
当然你不需要 Python2 上跑是没什么必要 |
6
Jackxun123 2019-07-12 10:29:37 +08:00
。。和一楼相同的疑问
|
8
yvescheung 2019-07-12 10:30:27 +08:00
有必要,因为我前几天就遇到过没加编码导致在另一台服务器上输出和注释全部乱码,你永远不知道自己的程序会被放在什么奇怪的环境下运行
|
9
ctro15547 2019-07-12 10:30:32 +08:00 1
用 py2 写个首行自动加的脚本不就得了(手动狗头)
|
11
princelai 2019-07-12 10:30:46 +08:00 via Android
自己写的从来不加,你这为别人写还是按要求吧
|
12
lzvezr 2019-07-12 10:31:08 +08:00 via iPhone
一楼的意思难道不是写个脚本自动加吗
|
13
Jackxun123 2019-07-12 10:31:47 +08:00
我的话,用 sed 对某个文件夹下的所有.py 文件首行添加就行了,还可以加判断是否包含这句=。=
咋说呢,人家是甲方,他爱咋搞咋搞=。=习惯就好了 |
14
ant2017 2019-07-12 10:32:19 +08:00 via Android
一行命令直接加上的事
|
15
luhuan97 OP 额,各位 v 友,其实我的问题重点在,有没有必要加,,,我知道可以自动加编码注释,我是故意取消的,我知道我在用的是 python3。不是加的难度,是有没有必要。
|
16
ManjusakaL 2019-07-12 10:35:35 +08:00 via Android
有必要啊,,你永远不知道你的代码会被放在什么环境下运行
|
17
lihongjie0209 2019-07-12 10:35:48 +08:00
@luhuan97 有没有必要是甲方决定的, 不是你决定的
|
18
Vegetable 2019-07-12 10:39:17 +08:00
没必要,爸爸说了之后,这就是个需求了,你觉得他们需求都有必要吗?
|
19
lniwn 2019-07-12 10:41:05 +08:00
指定编码和不指定编码,源文件内容是两个不同的编码,这和 py2 或者 py3 没有什么关系。
|
20
ipwx 2019-07-12 10:42:08 +08:00
对于我自己的项目,如果文件内部有非 ASCII 字符,我会加上。
退一步考虑,就算 Python 3 解释器不关心它,有些编辑器或者 IDE 说不定也会关心它。 加了又不会怀孕 😒 |
21
tennc 2019-07-12 10:43:43 +08:00
手敲的大佬 膜拜下~~
py 写脚本 头部都是自动生成( ide )。。。。 |
22
Hanggi 2019-07-12 10:49:41 +08:00
9102 年是什么梗?只是单纯倒过来写显得都什么年代了?
|
23
devcat 2019-07-12 10:51:45 +08:00 2
2019 年了,还在用 9012 这种烂梗吗?
|
25
Keyes 2019-07-12 10:54:05 +08:00 via iPhone
写好模版了,真心生命远离手打 233
|
27
ytmsdy 2019-07-12 11:07:26 +08:00
就算爸爸说每个文件里面要加一个雅美蝶,也要加啊!
|
28
lniwn 2019-07-12 11:07:31 +08:00 1
@Trim21 #26 刚看了下,确实我记错了,py3 默认使用 utf8 解析源文件,py2 默认使用 ascii 解析源文件。
https://docs.python.org/3/howto/unicode.html https://www.python.org/dev/peps/pep-0263/ |
29
Davic1 2019-07-12 11:08:57 +08:00
问: 有什么影响?
|
30
BinRelay 2019-07-12 11:20:00 +08:00
我一直觉得加这个很不合理。
注释就应该是注释,加与不加完全没有任何区别。不应该承担任何功能。 |
31
cedoo22 2019-07-12 11:33:05 +08:00
这个 直接再写一个 py,给加上不就行了??要怎么苦逼?不要堆代码。
|
32
rocketman13 2019-07-12 11:42:37 +08:00
画蛇要添足吗?
|
33
lithiumii 2019-07-12 11:48:32 +08:00
我一直是不加的,但是遇到过因为没加导致的报错
|
34
Universe 2019-07-12 11:58:08 +08:00 8
find . -name "*.py" | xargs grep -L '# -- coding: utf-8 --' | xargs sed -i '2 a# -- coding: utf-8 --'
一行的事搞那么纠结干啥。。 |
35
hahaayaoyaoyao 2019-07-12 12:06:33 +08:00 via Android
@Universe 这个才是标准思路。
|
36
pkookp8 2019-07-12 12:09:01 +08:00 via Android 2
楼主只是描述了一个背景,对其中的事感到奇怪,超脱背景后讨论这件事奇不奇怪
怎么这么多人说背景和怎么做这件事 不管是脚本还是手动 copy 甚至手打,楼主应该是做完了才来问的 对于这个奇怪的注释设定,我不知道,但我不加自己的脚本也能跑,没有细究过 |
37
newtype0092 2019-07-12 12:12:36 +08:00
@devcat 因为明年就用不了了啊。。。
|
38
sikariba 2019-07-12 12:36:13 +08:00
既然明确说了是 py3 的项目,那我觉得没必要
|
39
karllynn 2019-07-12 12:41:45 +08:00
py3 项目不需要加…
用 sed 直接加上就行 |
40
inframe 2019-07-12 12:43:30 +08:00 via Android
pycharm 兴建文件时设置好模板就好
|
42
40huo 2019-07-12 12:48:15 +08:00 via Android
拒绝 py2 的流毒,不加
|
44
youngxu 2019-07-12 13:01:28 +08:00 via Android
@luhuan97 这也不知道的话…你是怎么会写程序的?程序不就是为了帮人类解决简单重复的工作而发明的吗
|
45
realcaoqi95 2019-07-12 13:05:01 +08:00
编辑器自动加的...
|
46
hhhsuan 2019-07-12 13:25:20 +08:00 via Android
一个 sed 全部搞定
|
47
reus 2019-07-12 13:59:08 +08:00
和你用不用 python3 有什么关系?执行环境你又不能控制。
这种事情要慎重考虑,“ 9102 ”年不是什么好的理由。 |
48
reus 2019-07-12 13:59:58 +08:00
哎,没吃过亏的年轻人啊!
|
49
reus 2019-07-12 14:01:43 +08:00
而且,什么叫“苦逼慢慢改”?你一个写程序的,就算你不会用 concat 命令,难道连写个脚本去改都不会吗?
|
51
witcherhope 2019-07-12 14:15:36 +08:00 via iPhone
9102 年,2020 看你怎么说
|
52
laike9m 2019-07-12 14:36:10 +08:00 via Android
不论是公司还是个人项目都不加。。
|
53
anonymous256 2019-07-12 14:44:38 +08:00 via Android
既然是 py3 的项目,就可以不用写。 楼上有的人说执行环境的问题,py3 的解释器已经默认使是 utf-8。难不成你 py3 的代码,强行要在 py2 解释器运行?除非一开始就打算要兼容 py2 和 py3 两个版本。
顺便吐槽一下,我同事也喜欢这么干(多此一举的事情),我用 with open 打开了项目中的文本,code review 的时候,同事让我用 try-except 去捕捉这个异常。这明明是一个不可能发生的异常(除非代码被人恶意做了手脚)。如果连这种异常都要去捕捉,那我每个 import 语句都要 try-except 了,因为理论上,我项目里的 py 文件和第三方库,还有可能被人偷了呢。 何必多此一举? |
54
zkqiang 2019-07-12 16:34:20 +08:00
用 IDE 自动加就行了... 加就加呗,也不是什么难事
另外我赞同 @anonymous256 吐槽的情况,有的人用 Python 这么灵动的语言,就是能写出笨重的代码出来... 处处捕获异常,处处考虑兼容 3.5 之前的版本,以及大量重复代码堆积的属性和 getter setter |
55
diferent 2019-07-12 16:53:11 +08:00
sed
|
56
falcon05 2019-07-12 17:04:49 +08:00 via iPhone
手动 copy ……
|
57
lihongjie0209 2019-07-12 17:06:54 +08:00
@anonymous256 windows 下打开一个已打开的文件会报错, linux 下不会
|
58
lihongjie0209 2019-07-12 17:07:48 +08:00
如果甲方让你把所有的变量名,方法名都改为日文命名, 你也必须改. 因为对方是甲方
|
59
mon6912640 2019-07-12 17:26:43 +08:00
不用,py2 遗留的东西,因为这个编码问题才会用 py3 的
|
60
fuxiuyin 2019-07-12 17:27:58 +08:00
如果从使用的角度来讲,在一个自己未知的环境部署,还是有必要的。python3 文档里是"By default, Python source files are treated as encoded in UTF-8."注意一下 *default* ,如果程序部署在自己不掌握的环境,尤其是交给别人去部署,这种 *default* 就是不可信的,因为你永远无法知道他们的环境是怎么样的,python 设置呀什么的,甚至他们用的有可能是自己魔改后的 python 解析器。
|
61
ClericPy 2019-07-12 17:42:34 +08:00
以前一直以为 py3 不需要 shebang 上加编码的,结果有天发现报错了,复现原理是
在 Windows 平台上 如果一大串字符串里有从网页复制的非法字符时候, 会报错 SyntaxError: Non-UTF-8 code starting with '\xe0' in file 但是 shebang 带上# ! coding:utf-8 就不报错 以前我在群里和人讨论过 https://gist.githubusercontent.com/ClericPy/7ef32e1456df013dfd97cbd2b5835238/raw/932a69a10477408ef771a3dc3146611bee0eba04/test_python3_encoding_error.py 可以试试去掉 shebang 那句 |
62
lolizeppelin 2019-07-12 17:47:55 +08:00
这玩意只有你代码文件里有相关字符串才需要啊...你代码文件里没有其他编码的当然不需要啊
你引用的库也不会在每个文件里都带这个头啊(其实大部分库都没带头,因为人家都用英文), 不过在东亚国家注释得写母语的话,233333 |
63
129ykx733D016U2n 2019-07-12 19:58:00 +08:00
Python3 不是默认 utf8 吗?
|
64
laqow 2019-07-12 20:05:27 +08:00 via Android
日文编码比中文水还深,给日本供货编码细节注意一下还是合理的吧
|
65
siteshen 2019-07-13 01:12:38 +08:00
一个肯定没问题的方案,一个可能有问题的方案,我倾向于选择前者。
|
66
autogen 2019-07-13 01:24:28 +08:00
没有加的习惯。。。
|
67
ly931003 2019-07-13 08:21:06 +08:00 via Android
讲道理会编程检测一下首行让后自动加不就好了,反正 ascii 文件嘛
|