Любая проверка, чтобы видеть, написан ли код в Python 2.7 или 3 и выше?
У меня глючный длинный Python-проект, который я пытаюсь отладить. Это грязно и без документов. Я знаком с python2.7. В этом проекте нет бинарных файлов. Прямая идея состоит в том, чтобы попытаться выполнить это как python2.7 file.py
или же python3 file.py
и посмотрим, что работает. Но, как я уже сказал, во многих местах он уже глючит. Так что ни один из них не работает. Есть ли какая-либо проверка, метод или редактор, которые могли бы сказать мне, был ли код написан на python2.7 или python3?
3 ответа
Попытайтесь скомпилировать его. Если скрипт использует синтаксис, специфичный для версии, компиляция завершится неудачно.
$ python2 -m py_compile foo.py
$ python3 -m py_compile foo.py
Следующие утверждения указывают на 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
...
Они предполагают Python 2, но могут проявляться как старые привычки в коде Python 3:
'%d %f' % (a, b)
# integer divisions
r = float(i)/n # where i and n are integer
r = n / 2.0
Скорее всего, это 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
...
Используйте это в своем коде:
import platform
print platform.python_version()
выводит строку: 2.7.10
Добавьте эту строку в файл:
help()
это должно автоматически напечатать версию вместе с интерфейсом справки по умолчанию. не забудьте удалить это позже.