我有一个代码,可以输出目录中所有.pdf文件。它输出如下所示的字符串堆栈。
file0.PDF
file1.PDF
file2.PDF
file3.PDF
我想将这些字符串放入一个列表,如下所示:
['file0.PDF', 'file1.PDF', 'file2.PDF', 'file3.PDF']
我已经用下面的代码做到了这一点。
import os
list_final = []
for file in os.listdir(path):
if ".PDF" in file:
for value in file.split('\n'):
list_final.append(value)
print(list_final)
这是上面想要的格式,这就是我想要的。
有更好的方法吗?我觉得我的代码效率很低。我已经尝试了以下列表理解,但是不确定为什么它不起作用。
list_final = [value for value in file.split('\n')]
谢谢。
答案 0 :(得分:1)
您可以使用列表理解:
list_final = [e for e in os.listdir(path) if e.endswith('.PDF')]
或者您可以使用pathlib.Path.glob:
from pathlib import Path
p = Path(path)
list_final = [e.name for e in p.glob('*.PDF')]
答案 1 :(得分:1)
尝试使用glob.glob()
,它将找到所有符合格式的文件:
import glob
print(glob.glob("*.pdf")) # returns a list of filenames
或者,如果您要使用除当前路径以外的其他路径,只需将其加入模式
print(glob.glob(path + "/*.pdf")) # returns a list of filenames
Or even better,请改用os.path.join():
from os.path import join
glob.glob(join(path, "/*.pdf"))