使用 Python 列出带有 ADB 的文件



我想列出的Android设备目录中的文件列表,但是我只想要没有点的文件(也就是说 - 没有隐藏文件和具有明确扩展名的文件(。

我可以使用find在移动设备中执行此操作:

find /mydir -type f -not -name *.*

我可以对主机的adb做同样的事情(这里我需要"来保护我的正则表达式(

adb shell find /mydir -type f -not -name "*.*"

但是,我没有办法让它在我的主机触发的 Python 脚本中工作。我所做的是:

list_command = [
'adb',
'shell',
'find',
'/mydir'
'-type',
'f',
'-not',
'-name',
r''*.*''
]
subprocess.check_output(list_command)
.decode()
.splitlines()

它实际上给了我所有文件,无论路径中是否显示点。在 Python 中运行此adb命令的正确方法是什么?

由于您仍在传递 glob 而不是正则表达式,因此您不应该转义点字符,请使用"'*.*'"

list_command = [
'adb',
'shell',
'find',
'/mydir'
'-type',
'f',
'-not',
'-name',
"'*.*'"
]

只需在单引号内使用它即可。请注意,您不需要转义双引号字符串文本中的单引号,"'*.*'"比相应的''*.*''单引号字符串文本更干净。

最新更新