Python 如何在单独的列表中收集每个子目录中的文件名

Python 如何在单独的列表中收集每个子目录中的文件名,python,Python,假设/test有/test1、/test2、/test3等子目录,每个子目录中都有多个PDF文件 我想用Python将每个子目录的PDF文件名保存在一个单独的列表中 我该怎么做 我尝试以下代码: import os PDF_list = [] for r, d, f in os.walk('.'): for outPDF in f: if outPDF.endswith('.pdf'): print(outPDF) PDF_list.app

假设/test有/test1、/test2、/test3等子目录,每个子目录中都有多个PDF文件

我想用Python将每个子目录的PDF文件名保存在一个单独的列表中

我该怎么做

我尝试以下代码:

import os
PDF_list = []
for r, d, f in os.walk('.'):
    for outPDF in f:
      if outPDF.endswith('.pdf'):
         print(outPDF)
         PDF_list.append(outPDF)
但是有了这段代码,我可以保存我在列表中找到的所有PDF文件。 但对我来说,我想把每个子目录中的PDF文件保存在一个单独的列表中

请问我怎么做

import os
path = "/path/../temp/"

files = [os.listdir(path + i) for i in os.listdir(path)]

pdfs = []
for pdf in files:
    for j in pdf:
        if j.endswith('.pdf'):
            pdfs.append(j)
例如:

- /temp
  - /temp1
    - x.pdf
    - y.py
  - /temp2
    - z-pdf
    - w.pdf
上述代码将为您提供以下结果:

['x.pdf','z.pdf','w.pdf']

您的代码只需要一点小小的更改。为每个子目录创建一个列表,如果不是空的,则将其附加到主列表中:

import os

pdf_lists = []
for path, directories, files in os.walk('.'):
    pdfs_in_directory = []
    for file in files:
        if file.endswith('.pdf'):
            pdfs_in_directory.append(file)
    if pdfs_in_directory:
        pdf_lists.append(pdfs_in_directory)
对于以下目录结构:

-/test
-/test1:
-file1.pdf
-file2.pdf
-/test2:
-/test3:
-文件3.pdf
-foo.txt
-/test4
-bar.txt
它将为您提供:

[['file1.pdf', 'file2.pdf'], ['file3.pdf']]

添加您尝试的代码。
os.walk()
做您想做的事吗?如果某个文件夹中没有PDF文件怎么办。我们应该附加一个空列表还是忽略它?我们可以忽略它。这样,我只会得到每个文件夹中的子文件夹名称列表,而不是文件名。如果在路径中指定测试文件夹的路径,它将工作,例如-“/home/meryem/test/”否,我找到所有文件,而不仅仅是PDf文件只要现在检查,它将产生所有结果pdfs@Shyam ,非常感谢你对我的帮助和回复非常感谢你的帮助