开发者

Is there a better way to check Python code for a syntax errors without external modules?

开发者 https://www.devze.com 2023-03-23 15:37 出处:网络
As the title says, is there a better way to check a Python source for syntax errors without the use开发者_如何学编程 of external modules?

As the title says, is there a better way to check a Python source for syntax errors without the use开发者_如何学编程 of external modules?

I mean, in sense of a more Pythonic style or a more performant way.

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

EDIT: Ideally it would be performant enough for real-time syntax checking.


exec doesn't sound like a particularly good idea. What if the script in question has side effects (e.g. creates or modifies files) or takes a long time to run?

Take a look at the compile function and the parser module.

0

精彩评论

暂无评论...
验证码 换一张
取 消