Есть ли лучший способ проверить код Python на наличие ошибок синтаксиса без внешних модулей? - PullRequest
0 голосов
/ 29 июля 2011

Как видно из заголовка, есть ли лучший способ проверить источник Python на наличие синтаксических ошибок без использования внешних модулей?

Я имею в виду более Pythonic стиль или более производительный способ.

def CheckSyntax(source, raw = False):
    lines = source.count("\n")
    source += "\nThis is a SyntaxError"  # add a syntax error to source, it shouldn't be executed at all
    try:
        exec source in {}, {}
    except SyntaxError, e:
        if e.lineno != lines + 2:
            if raw:
                return e
            else:
                return e.lineno, e.offset, e.text

РЕДАКТИРОВАТЬ: В идеале было бы достаточно производительности для проверки синтаксиса в режиме реального времени.

1 Ответ

6 голосов
/ 29 июля 2011

exec не очень хорошая идея.Что, если рассматриваемый скрипт имеет побочные эффекты (например, создает или изменяет файлы) или требует много времени для запуска?

Посмотрите на функцию compile и parser модуль.

...