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

Python 如何跳过以特定名称开头的目录?,python,python-2.7,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-environmen

我的办公室里有一些目录

/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
现在,下面的代码可以让我获得上面文件夹中的所有目录,但我想跳过终止的部分,我怎么做

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)]

您可以在创建
内部目录
列表时将其过滤掉:

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

蟒蛇式的方式是:

if not name.startswith("TERMINATED")

什么是“终止部分”?[:10]是什么意思?从字符串中切掉前10个字符。检查:@Kittystone它获取字符串的前10(0到10)个字符。所以
“random\u name5”[:10]=“random\u name”
“TERMINATED\u random\u name1”[:10]=“TERMINATED”
。它与
name[0:10]
相同,您也可以将两个过滤器放入相同的列表理解中:
internal\u dirs=[os.path.join(outer\u dir,name,“inventory/group\u vars”)表示随机名称,如果name[:10]!=“TERMINATED”如果os.path.isdir(name)]