将多行字符串读入列表-Python

时间:2020-04-11 22:13:57

标签: python string list

我有一个代码,可以输出目录中所有.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')]

谢谢。

2 个答案:

答案 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"))
相关问题