是否检查编写的代码是否在python 2.7或3及更高版本?

0as*_*am0 23 python version identify python-2.7 python-3.x

我有一个错误的长python项目,我正在尝试调试.它凌乱而无证.我熟悉python2.7.这个项目中没有二进制文件.直接的想法是尝试执行它python2.7 file.pypython3 file.py看看哪些有效.但正如我所说,它已经在许多地方出现了问题.所以他们都没有工作.是否有任何检查或方法或编辑器可以告诉我代码是用python2.7还是python3编写的?

Ign*_*ams 33

尝试编译它.如果脚本使用特定于版本的语法,则编译将失败.

$ python2 -m py_compile foo.py
$ python3 -m py_compile foo.py
Run Code Online (Sandbox Code Playgroud)

  • @AleSod:这就是您在 Windows 上执行此操作的具体方式;在其他任何地方,“py”都不存在。 (4认同)
  • 对于 Python 初学者来说,请注意:这种方法不会捕获运行时错误,例如一个 Python 版本与另一个版本中缺少模块导入。 (3认同)

Han*_*uys 10

以下语句表示 Python 2.x:

import exceptions

for i in xrange(n):
  ...

print 'No parentheses'

# raw_input doesn't exist in Python 3
response = raw_input()

try:
   ...
except ValueError, e:
   # note the comma above
   ...
Run Code Online (Sandbox Code Playgroud)

这些建议使用 Python 2,但可能会在 Python 3 代码中作为旧习惯出现:

'%d %f' % (a, b)

# integer divisions
r = float(i)/n # where i and n are integer
r = n / 2.0
Run Code Online (Sandbox Code Playgroud)

这些很可能是 Python 3:

# f-strings
s = f'{x:.3f} {foo}'

# range returns an iterator
foo = list(range(n))

try:
   ...
except ValueError as e:
   # note the 'as' above
   ...
Run Code Online (Sandbox Code Playgroud)