我是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中做到这一点?
非常感谢
答案 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']