使用adb shell获取Android目录中的文件数

时间:2017-03-23 15:37:21

标签: android python python-2.7 shell subprocess

我目前正在尝试使用以下python代码来获取目录中的文件数。

    output = subprocess.check_output(["adb", "shell", "cd /sdcard/Dir/Subdir", "find . -type f | wc -l"])
    print output

但是,我得到了输出:

/system/bin/sh: cd: too many arguments

0

但如果我在命令提示符下输入以下内容,我会得到所需的结果(14个文件):

adb shell
cd /sdcard/Dir/Subdir
find . -type f | wc -l

知道如何将命令行代码集成到python中吗?

1 个答案:

答案 0 :(得分:2)

如果您将参数传递给列表中的check_output(不在字符串中),那么如果您传递带空格的参数,则会引用它们。

但这不是主要问题。

您正在adb shell中运行check_output,但是下一个命令应该通过适当的命令行或shell的标准输入传递。

您可以尝试以下(未经测试):

output = subprocess.check_output(["adb", "shell", "cd /sdcard/Dir/Subdir", "&&","find . -type f | wc -l"])

&&告诉shell将cd链接到find,而不是将所有参数传递给cd

或以交互方式运行您的shell,并传递命令,就像您键入它们一样(使用Popen):

p = subprocess.Popen(["adb", "shell"],stdin=subprocess.PIPE)
out,err = p.communicate("cd /sdcard/Dir/Subdir\nfind . -type f | wc -l\n")