获取文件夹中的pdf文件列表

2022-07-06 13:06:24 发布

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

我想得到一个文件列表,我有我的python脚本的文件夹中所有pdf文件的名称

现在我有了这个代码:

files = [f for f in os.listdir('.') if os.path.isfile(f)]
for f in files:

e = (len(files) - 1)

问题是这段代码找到了文件夹(include.py)中的所有文件,所以我“修复”了我的脚本是否是文件夹(zzzz.py)中的最后一个文件,然后减去列表中的最后一个文件,即我的script.py

我尝试了很多代码只为find.pdf,但这越接近我


Tags: 文件path代码inpy脚本文件夹名称列表forifpdfosfileslistdir
3条回答
网友
1楼 ·

您只需过滤文件名,查找以“.pdf”结尾的文件,对吗

files = [f for f in os.listdir('.') if os.path.isfile(f)]
files = filter(lambda f: f.endswith(('.pdf','.PDF')), files)

现在,您的files只包含以.pdf或.pdf结尾的文件名:)

网友
2楼 ·

直接使用目录上的glob查找所有pdf文件:

from os import path
from glob import glob  
def find_ext(dr, ext):
    return glob(path.join(dr,"*.{}".format(ext)))

演示:

In [2]: find_ext(".","py")
Out[2]: 
['./server.py',
 './new.py',
 './ffmpeg_split.py',
 './clean_download.py',
 './bad_script.py',
 './test.py',
 './settings.py']

如果要选择忽略大小写:

from os import path
from glob import glob
def find_ext(dr, ext, ig_case=False):
    if ig_case:
        ext =  "".join(["[{}]".format(
                ch + ch.swapcase())) for ch in ext])
    return glob(path.join(dr, "*." + ext))

演示:

In [4]: find_ext(".","py",True)
Out[4]: 
['./server.py',
 './new.py',
 './ffmpeg_split.py',
 './clean_download.py',
 './bad_script.py',
 './test.py',
 './settings.py',
 './test.PY']
网友
3楼 ·

使用glob模块:

>>> import glob
>>> glob.glob("*.pdf")
>>> ['308301003.pdf', 'Databricks-how-to-data-import.pdf', 'emr-dg.pdf', 'gfs-sosp2003.pdf']