示例目录树:
root
/|\
/ | \
/ | \
A B C
/ \
/ \
D E
\
\
F
\
\
G
Run Code Online (Sandbox Code Playgroud)
os.walk() 将使用深度优先搜索算法遍历这个目录树。例如,os.walk() 将按以下顺序处理这棵树:root、A、B、D、C、E、F、G。os.walk() 似乎没有提供广度优先的选项搜索。如果此选项可用,它将按以下顺序处理这棵树:root、A、B、C、D、E、F、G。在我的应用程序中,我需要进行反向搜索。然而, os.walk(tree, topdown = False) 产生:A、D、B、G、F、E、C、根。相反,反向广度优先搜索将产生:G、F、E、D、C、B、A、根。
我必须创建自己的解决方案,如下所示:
def reversewalk(path):
dirlist = {}
for dirName, subdirList, fileList in os.walk(path, topdown=False):
depth = dirName.count(os.path.sep)
dirlist[os.path.abspath(dirName)] = (depth, dirName, subdirList, fileList)
return sorted(dirlist.items(), key = lambda x : x[1], reverse = True)
Run Code Online (Sandbox Code Playgroud)
我的问题是:在 os.walk() 或等效的 Python 函数中是否有“广度优先”搜索选项?后续问题是:如果没有,是否有比我提出的更好的解决方案?
我无法让btmgmt add-adv命令工作.我已经尝试了建议的示例,但也无效.我的目标是使用BlueZ 5.x堆栈(我使用v.5.31)使用我自己的自定义有效负载设置广告和扫描响应有效负载.
我已经启用了le,可连接,广告和电源.我尝试了各种组合(断电,广告关闭等)但它仍然无效.这是示例命令(带响应):
sudo btmgmt add-adv -u 180d -u 180f -d 080954657374204C45 1
Add Advertising failed with status 0x01 (Unknown Command)
Run Code Online (Sandbox Code Playgroud)
谁能帮我?
谢谢