2

astを使用して.pyファイルを開こうとしています。ファイル内のクラスごとに、必要な属性を指定してください。

しかし、私は期待通りに振る舞うことができません。

できると思います

import ast

tree = ast.parse(f)
for class in tree:
    for attr in class:
        print class+" "+attr.key+"="+attr.value

例えば; XMLを使用したElementTreeに少し似ています。あるいは、astの背後にあるまったく間違った考えを持っているかもしれません。その場合、これを別の方法で行うことは可能ですか(そうでない場合は、何かを作成します)。

4

1 に答える 1

1

それよりも少し複雑です。関連する AST の構造と AST ノード タイプを理解する必要があります。また、NodeVisitorクラスを使用します。試す:

import ast

class MyVisitor(ast.NodeVisitor):
    def visit_ClassDef(self, node):
        body = node.body
        for statement in node.body:
            if isinstance(statement, ast.Assign):
                if len(statement.targets) == 1 and isinstance(statement.targets[0], ast.Name):
                    print 'class: %s, %s=%s' % (str(node.name), str(statement.targets[0].id), str(statement.value))

tree = ast.parse(open('path/to/your/file.py').read(), '')
MyVisitor().visit(tree)

詳細については、ドキュメントを参照してください。

于 2013-09-12T05:22:44.853 に答える