Python 使用os.path.exists和assert检查除定义的列表外是否存在其他文件夹

Python 使用os.path.exists和assert检查除定义的列表外是否存在其他文件夹,python,Python,例如,我的文件夹结构是: original/dev original/prd (请注意,dev和prd是文件夹而不是文件) 我想检查原始文件夹中是否有我想要的开发和prd文件夹之外的其他内容。我的问题是这个不需要的文件夹可能有任何名称 我对第一部分的想法是: assert os.path.exists(os.path.join('tests','testvars','dev')) # it works assert os.path.exists(os.path.join('tests','t

例如,我的文件夹结构是:

  • original/dev
  • original/prd
(请注意,
dev
prd
是文件夹而不是文件)

我想检查
原始
文件夹中是否有我想要的
开发
prd
文件夹之外的其他内容。我的问题是这个不需要的文件夹可能有任何名称

我对第一部分的想法是:

assert os.path.exists(os.path.join('tests','testvars','dev')) # it works
assert os.path.exists(os.path.join('tests','testvars','prod')) # it works

正如您所注意到的,最后一部分将抛出一个断言错误,其他文件夹(除了
prd
dev
)也存在。

您应该这样做:

import os
other_dir = [x for x in os.listdir(path) if x != 'dev' and x!='prd']

这样,您将得到除
dev
prod
之外的所有其他目录内容的列表。您只需执行以下操作:

import os
other_dir = [x for x in os.listdir(path) if x != 'dev' and x!='prd']

这样,您将得到除
dev
prod

之外的所有其他目录内容的列表。这是否回答了您的问题?为什么
断言os.path.exists(os.path.join('tests'、'testvars'、'dev'))
如果不包含
原始组件,那么它会起作用我的建议和@RandomDavis一样……你应该在
original
目录中列出所有内容,反复浏览该列表,如果你得到的不是
dev
prd
,那么做任何适当的事情。这是否回答了你的问题?为什么
断言os.path.exists(os.path.join('tests'、'testvars'、'dev'))
如果不包含
原始组件,那么它会起作用我的建议与@RandomDavis相同……你应该在
原始
目录中列出所有内容,迭代该列表,如果你得到的不是
dev
prd
,那么做任何适当的事情。根据这个答案和我使用assert的需要,我最终使用了''''assert len'([x代表os.listdir中的x(路径),如果x!='dev'和x!='prd'])==0''。如果除“dev”和“prd”之外还有其他文件夹,这将引发断言错误。根据这个答案和我使用断言的需要,我最终使用了''''断言len([x代表os.listdir中的x(路径),如果x!='dev'和x!='prd'])==0''。如果除“dev”和“prd”之外还有其他文件夹,这将引发断言错误。