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

时间:2015-11-30 12:34:03

标签: python

我想获取文件夹中所有pdf文件的名称列表我有我的python脚本。

现在我有了这段代码:

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

e = (len(files) - 1)

问题是这段代码找到了文件夹中的所有文件(包括.py)所以我"修复"如果我的脚本是文件夹中的最后一个文件(zzzz.py),稍后我会减去列表的最后一个文件,即我的script.py。

我尝试了很多代码只能找到.pdf,但这越接近我。

5 个答案:

答案 0 :(得分:7)

直接在目录上使用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']

答案 1 :(得分:3)

您只需要过滤文件名称,查找以" .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 :(得分:2)

以递归方式获取所有PDF文件:

import os

all_files = []
for dirpath, dirnames, filenames in os.walk("."):
    for filename in [f for f in filenames if f.endswith(".pdf")]:
        all_files.append(os.path.join(dirpath, filename)

答案 3 :(得分:1)

您可以使用endswith

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

答案 4 :(得分:1)

使用glob模块:

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