如果文件名和目录匹配python

时间:2019-01-10 22:19:03

标签: python path directory

我是python的新手,所以对目录遍历有些困惑。我的问题是我有这样的文件夹结构。

-modules/
 -files/
  -aag
   -aag.cfg
   -something1.cfg
  -bfs
   -bfs.cfg
   -something2.cfg 
  and so on

通常,我必须在目录

下获取所有cfg文件。
/modules/files/

问题是:如果目录名和文件名相同,则仅需要配置文件。例如:由于aag文件夹有两个配置,所以我只需要获取aag.cfg文件而不是something1.cfg。

如何在python中做到这一点?

非常感谢

2 个答案:

答案 0 :(得分:1)

假设/modules/files/下只有一个子目录级别:

import os
for name in os.listdir('/modules/files'):
    config = '/modules/files/%s/%s.cfg' % (name, name)
    if os.path.isfile(config):
        # found it!

答案 1 :(得分:0)

这是一个递归解决方案,它将列出满足您给定条件的所有目录和子目录。

import os

def foo(s):
    ans = []
    if os.path.isdir(s):
        for f in os.listdir(s):
            ans.extend(foo(s+r"/"+f))
    elif s.split(r'/')[-1].split('.')[0] == s.split(r'/')[-2]:
        ans.append(s.split(r'/')[-1])
    return ans
print(foo(r"modules")) # "modules is the directory you want to list cfg files"

此解决方案将在这样的结构上工作。

-abc/
  -abc1/
    -abc1.cfg
    -lol/
      -lol.cfg
  -pqr
    -pqr1.cfg
  -abc.cfg

因此此代码将返回列表

  

['abc1.cfg','lol.cfg','abc.cfg']