获取变量在不同文件中定义的行号

时间:2012-11-05 09:55:32

标签: python python-2.3

我是否可以获取在不同文件中定义变量的行号。 例如:

file1.py
x = 5
mylist = [ 1, 2, 3]


file2.py

execfile("file1.py")
# TODO
# get line number of 'x' or 'mylist'

我假设每个变量只定义一次,但以防万一它们多次定义?

由于

2 个答案:

答案 0 :(得分:2)

Ashwini的答案略有改进,使用ast模块而不是正则表达式:

import ast

class GetAssignments(ast.NodeVisitor):
    def visit_Name(self, node):
        if isinstance(node.ctx, ast.Store):
            print node.id, node.lineno

with open('testing.py') as fin:
    module = ast.parse(fin.read())
    GetAssignments().visit(module)

我认为类似的东西可以用在已编译的对象上......

答案 1 :(得分:0)

使用regex

尝试这样的事情,它会返回找到x = something的所有行:

In [25]: with open("fil.py") as f:
    print [index for index,line in enumerate(f) if re.findall(r'(x\s+=)',line)]
   ....:     
[0, 2, 3]

fil.py包含:

x = 5
mylist = [ 1, 2, 3]
x = 7
x = 8