IF语句:Shell到python

IF语句:Shell到python,python,linux,bash,shell,unix,Python,Linux,Bash,Shell,Unix,比方说 DIR2=/tmp/test' 'dirName=stats 如果[-d/$DIR2/$dirName/*] 以上就是我所拥有的。 它检查/tmp/test/stats目录中是否包含任何文件或目录。 如果它确实包含一些东西,那么我将打印“是” 如何将其转换为python语言 if os.path.exists(DIR2 + "/" + dirName + ): print "pass" 这就是我到目前为止所尝试的 但是我知道我需要在if语句的末尾多加一个单词。我想最简单的方法

比方说

DIR2=/tmp/test'
'dirName=stats
如果[-d/$DIR2/$dirName/*]
以上就是我所拥有的。 它检查
/tmp/test/stats
目录中是否包含任何文件或目录。 如果它确实包含一些东西,那么我将打印“是”

如何将其转换为python语言

if os.path.exists(DIR2 + "/" + dirName + ):
    print "pass"
这就是我到目前为止所尝试的


但是我知道我需要在if语句的末尾多加一个单词。

我想最简单的方法是检查返回的列表是否为非空

if os.listdir(os.path.join(DIR2, dirName)):
    print("Not empty!")

我相信这可以满足您的需要,而无需创建一个包含目录中整个文件名集的列表

hasContents = False
for (root, dirs, files) in os.walk(DIR2 + "/" + dirName):
    if dirs or files:
        hasContents = True
    break

这不是shell代码段所做的。这甚至不是一个有效的shell代码段。@EtanReisner该shell工作得非常好。不,它绝对不是。这根本不起作用。第一行不是shell赋值(在
=
周围有空格)。第一行后面有一个单引号。第二行有一个前导单引号。如果目录中有多个文件(参数太多),则
if
测试将导致
[
失败。好的,我不是在说声明。我只是在说一般的if语句,它确实有效。if语句不起作用。请在包含多个文件/目录的目录上尝试。您会得到一个
[:参数太多
错误。说真的,这三个参数中没有一行是正确和有效的。除非
os.listdir
是懒惰的(可能是我不知道的)这对于大目录来说是非常昂贵的。使用os.walk的第一个结果可能更便宜且一致。@EtanReisner——没错,但是OPs原始shell代码对于大目录来说也是非常昂贵的。最终,我不知道有什么独立于平台的方法来检查目录是否包含某些内容。。@EtanReisner:
os.listdir()
并不懒惰;Python还没有目录的惰性列表器。操作代码同样低效。@mgilson也会检查子目录和文件?或者只是检查/tmp/test/stats的内部内容?我不想超出/tmp/test/stats/*我只想看看/tmp/test/stats/not like/tmp/test/stats内部是否有任何内容/什么/what2/what3打开和on@Young--它只列出您传递给它的目录的内容。它不会递归地进入子目录,如
os.walk