如何跳过以特定名称开头的目录?

时间:2017-02-20 18:29:18

标签: python python-2.7

我有一些目录坐在

/home/ubuntu/ansible-environments/aws

其中有许多子目录遵循以下约定:

/home/ubuntu/ansible-environments/aws/random_name1/inventory/group_vars/all
/home/ubuntu/ansible-environments/aws/random_name2/inventory/group_vars/all
/home/ubuntu/ansible-environments/aws/random_name3/inventory/group_vars/all
/home/ubuntu/ansible-environments/aws/random_name4/inventory/group_vars/all
/home/ubuntu/ansible-environments/aws/random_name5/inventory/group_vars/all
/home/ubuntu/ansible-environments/aws/TERMINATED_random_name1/inventory/group_vars/all

现在下面的代码能够获取上面文件夹中的所有目录,但是我想跳过TERMINATED部分,我该怎么办?

outer_dir=os.path.expanduser("/home/ubuntu/ansible-environments/aws")
print (outer_dir)
random_names = os.listdir(outer_dir)
print (random_names)
inner_dirs = [
    os.path.join(outer_dir, name, "inventory/group_vars")

    for name in random_names
]
#print (inner_dirs)

# Now filter it to those directories that actually exist
inner_dirs = [name for name in inner_dirs if os.path.isdir(name)]

2 个答案:

答案 0 :(得分:1)

您可以在创建inner_dirs列表时将其过滤掉:

inner_dirs = [
    os.path.join(outer_dir, name, "inventory/group_vars")
    for name in random_names
    if name[:10] != "TERMINATED"
]

答案 1 :(得分:0)

Pythonic的方式是:

if not name.startswith("TERMINATED")