СинтаксисError не исключается в Python 3
Я пытаюсь написать блок кода в верхней части моих программ, который, если программа случайно запущена в Python 2.x, выдает сообщение об ошибке и завершает работу, но если запуск в Python 3.x будет работать нормально :
try: print "Error: This program should only be run in Python 3." raw_input('>') exit() except SyntaxError: pass print("I see you're running Python 3.") # rest of program
Это правильно работает в Python 2.7 (т. Е. Отображает ошибку и завершает работу), но когда я запускаю его в Python 3.3, я получаю SyntaxError, хотя я сказал, что имеет исключение.
File "version.py", line 2 print "This program should only be run in Python 3" ^ SyntaxError: invalid syntax
Что мне не хватает?
- python joblib Параллельно в Windows не работает даже «если __name__ == '__main__':" добавлен
- Python 3.2 Ошибка синтаксиса лямбда
- Странное поведение Python из-за неправильного использования сравнения «нет»?
- Можно ли определить функцию с точным именем в Python?
- Как сделать эту программу Python компиляцией?
SyntaxError
s выбрасывается во время компиляции . Вы не можете их поймать, как исключения во время выполнения.
Если вы хотите проверить версию python, посмотрите на sys.version_info
.
т.е.
import sys if sys.version_info.major < 3: sys.exit('This program should only be run in Python 3')
Вот небольшой пример того, как делать то, что вы хотите:
import sys if sys.version_info.major == 2: print("Error: This program should only be run in Python 3.") raw_input('>') exit(0)
Этот код будет работать в python2 и python3. В этом случае вам не нужно использовать try catch. Поскольку в python2 бывает, что (
и )
будет иметь эффекта, поскольку они не являются кортежами. Вы можете написать такую вещь, и она будет работать в python2 и python3 без SyntaxError.
- Как проверить синтаксическую ошибку кода Python перед ее запуском
- Причина синтаксической ошибки «return out of function» в Python?
- Получение ошибок с помощью простого кода Python, смущенный тем, почему. ActiveCode обеспечивает всю другую ошибку
- Мой интерпретатор python не распознает строки
- Python: объект .__ new __ () не принимает параметров
- Продолжить, если else in inline для Python
- Почему Python говорит, что pow имеет только 2 аргумента
- Что делать с «Неожиданным отступом» в python?
- Python if / elif синтаксическая ошибка … ПОЧЕМУ