Python 如何在单独的列表中收集每个子目录中的文件名
假设/test有/test1、/test2、/test3等子目录,每个子目录中都有多个PDF文件 我想用Python将每个子目录的PDF文件名保存在一个单独的列表中 我该怎么做 我尝试以下代码: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
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 ,非常感谢你对我的帮助和回复非常感谢你的帮助