Мне интересно, возможно ли подавить синтаксическую ошибку во время компиляции в Python.Подавление синтаксической ошибки во время компиляции
Мой офис в настоящее время работает на 2.4, хотя мы пытаемся переместить всех на 2.7, а затем 3.x, это занимает некоторое время. В результате у нас есть как переводчик 2.4, так и 2.7 на всех наших серверах.
Учитывая размер некоторых файлов, которые мы должны обрабатывать, обычно работает файл 2.7, но команда python
по умолчанию равна 2.4, и большинство людей не знают или просто не будут использовать, python27
,
В результате я делаю небольшой заголовок для добавления некоторых скриптов Python, которые будут повторно сценарии в 2.7, если он обнаруживает, что в чем-либо более низком:
if sys.version_info[0] == 2 and sys.version_info[1] < 7:
print "This file is best run in python 2.7 for performance purposes."
print
print "Running in 2.7 now..."
subprocess.call('python27', 'python_process.py', sys.argv[1])
Я не имел шанса чтобы проверить это еще, как, когда я запускаю файл в 2.4 я сразу получаю ошибку синтаксиса:
File "x:\phlib\pyprg\replace_double_with_single_quotes.py", line 12
with open(sys.argv[1], 'rb') as to_clean, \
^
SyntaxError: invalid syntax
Здесь вся линия его ошибки на:
with open(sys.argv[1], 'rb') as to_clean, \
open(sys.argv[1]+'.clean', 'wb') as cleaned:
Если я запустил файл всего в 2.7, он отлично работает.
Это, очевидно, потому, что 2.4 не понимает оператор with
, и хотя я мог бы просто удалить его и использовать file.open()/file.close(), мы хотели бы воспользоваться новыми функциями и библиотеки в 2.7 до перехода на 3.x.
Так что я хотел бы знать, можно ли подавить этот SyntaxError
, чтобы позволить программе работать. И если да, то как?
укажите код перед 'with' statment. – Nilesh
Почему бы вам не написать код совместимости версий до синтаксического анализа? – user3467349
@ Lafada: какая разница? –