仅使用python在子目录中查找文件

2024-05-12 22:16:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个父文件夹(PF),子文件夹(CF1CF2CF3…)和父文件夹(PFf1.csvPFf2.csv,…)和子文件夹(CF1f1.csvCF1f2.csvCF2f1.csvCF2f2.csvCF2f2.csv,…)

我只想找到子文件夹中的文件(CF1f1.csvCF1f2.csvCF2f1.csvCF2f2.csv,…)并忽略父文件夹中的文件。在

我在stackoverflow和internet上看到的所有示例都是这样的:

for folder, subfolders, files in os.walk(rootDir):
   for f in files:
      print(f)

它还会在父文件夹中查找文件。我试图将其修改为:

  • 循环浏览子文件夹

  • 在漫游过程中,测试新父文件夹是否在原始子文件夹列表中,然后分支到if语句中

但是没有成功。我觉得这应该很容易,但我对python还不熟悉,无法理解。任何帮助都将不胜感激。在


Tags: 文件csvin文件夹forfilespfcf2
3条回答

首先可以使用^{}并用^{}检查根目录中的所有子目录:

>>> from os import listdir
>>> from os.path import isfile, isdir, join

>>> root_dir = './PF'
>>> sub_dirs = [join(root_dir, dir) for dir in listdir(root_dir) if isdir(join(root_dir, dir))]
>>> sub_dirs
['./PF/CF2', './PF/CF1']

然后再次使用os.listdir遍历所有子目录以获取其中的文件。您可以使用^{}只检查文件:

^{pr2}$

循环为您提供了当前文件夹的路径,您可以检查它是否与rootDir不同(当然,rootDir是完整路径):

for folder, subfolders, files in os.walk(rootDir):
    if folder != rootDir:
        for f in files:
            print(f)

如果你想要的只是给定目录中目录中的文件,那就太过分了。为此我要写:

for name in os.listdir(base):
    if os.path.isdir(os.path.join(base, name)):
       for file in os.listdir(os.path.join(base, name)):
           if os.path.isfile(os.path.join(base, name, file)):
               print(os.path.join(base, name, file))

当然,有一些多余的os.path.join。在

相关问题 更多 >