小编Pie*_*rre的帖子

如何使用 ast(抽象语法树)模块获取节点的完整“路径”?

我正在修改 Python 的ast(抽象语法树)模块。

使用ast.NodeVisitor,可以遍历源树并显示信息,例如每个节点的名称,如下所示:

class MyAST(ast.NodeVisitor):      

     def visit_ClassDef(self, node):
         print(node.col_offset * " " +node.name)         
         self.generic_visit(node)   

     def visit_FunctionDef(self, node):         
         print(node.col_offset * " " + node.name)     
         self.generic_visit(node)   
Run Code Online (Sandbox Code Playgroud)

然后它可以用于任何代码,如下所示:

tree = ast.parse(open("/path/to/file.py").read())
MyAST().visit(tree)
Run Code Online (Sandbox Code Playgroud)

这将输出类似的内容(例如在requests包中的models.py上使用):

RequestEncodingMixin                                                                                                                                                         
    path_url                                                                                                                                                                 
    _encode_params                                                                                                                                                           
    _encode_files                                                                                                                                                            
RequestHooksMixin                                                                                                                                                            
    register_hook                                                                                                                                                            
    deregister_hook                                                                                                                                                          
Request                                                                                                                                                                      
    __init__
    __repr__
    prepare
(...)
Run Code Online (Sandbox Code Playgroud)

我想知道对于给定节点,它的完整“路径”。在上面的输出示例中,当我在FunctionDef节点 中时deregister_hook,我想知道它的父节点,ClassDef RequestHooksMixin以便我可以输出类似 的内容RequestHooksMixin.deregister_hook

python abstract-syntax-tree

6
推荐指数
1
解决办法
1013
查看次数

如何完全禁用 GNOME 锁定屏幕?

我已经按照本文所述的方法停用自动屏幕锁定。然而,当屏幕关闭并且我摇动鼠标或按键将其唤醒时,我仍然会看到锁定屏幕(如下图所示)。

如何完全禁用 Gnome 锁定屏幕,以便当我唤醒屏幕时,它显示我的桌面/应用程序,而不是这个无用的锁定屏幕?

请注意,与这个问题不同,我仍然希望屏幕在一段时间不活动后关闭,但我不希望在唤醒屏幕时显示锁定屏幕。

GNOME 锁屏

ubuntu gnome lockscreen gnome-shell ubuntu-18.04

6
推荐指数
2
解决办法
1万
查看次数

一步一步地在同一行打印

我开发了一个Python脚本,可以连续执行多个任务(主要是连接服务器和检索信息).

有很多步骤,对于每个步骤,我想显示一个点,以便用户知道有什么事情发生.

在每一步结束时,我做:

print('.', end='')
Run Code Online (Sandbox Code Playgroud)

在最后一步,我写道:

print('Done!')
Run Code Online (Sandbox Code Playgroud)

它的工作原理,除了在执行最终打印之前没有显示任何内容,所以它有点失败了它的原始目的:)

基本上,屏幕上没有显示任何内容,并且在最后一刻,会弹出:

.......Done!
Run Code Online (Sandbox Code Playgroud)

如何强制Python逐步在同一行上打印?

python python-3.x

3
推荐指数
1
解决办法
126
查看次数