如何区分PDF文件与其他文件?

时间:2014-07-24 15:40:58

标签: python-3.x

我必须处理很多文件。如何区分哪个是PDF文件而哪个不是?我在Windows上运行Python。谢谢你的帮助。

2 个答案:

答案 0 :(得分:1)

如果您不信任文件名的扩展名,则可以读取文件的前几个字节并测试它是否以%PDF-开头

像这样:

with open(fn, 'rb') as fin:
    line=fin.read(20)
    if line.startswith('%PDF-'):
        # its a pdf file...
        # you can parse the version of PDF by the versioning x.x after %PDF-x.x
    else:
        # it is not a pdf file

答案 1 :(得分:1)

如果您想依赖文件扩展名,可以使用以下代码:

#!python3

import os

def isPDFfile(fname):
    name, ext = os.path.splitext(fname)
    return ext.lower() == '.pdf'

if __name__ == '__main__':
    for fname in os.listdir('.'):
        if isPDFfile(fname):
            print(fname, 'is PDF file.')
        else:
            print(fname, 'is not PDF file.')

如果您想确定该名称不是目录,可以添加测试:

def isPDFfile(fname):
    if not os.path.isfile(fname):
        return False
    name, ext = os.path.splitext(fname)
    return ext.lower() == '.pdf'

还有os.walk()函数可以遍历目录中的文件。如果要查找目录中的所有PDF文件,可以编写自己的专用步骤,只返回PDF文件:

def walkPDFfiles(directory):
    for dirpath, dirs, files in os.walk(directory):
        for fname in files:
            name, ext = os.path.splitext(fname)
            if ext.lower() == '.pdf':
                yield os.path.join(dirpath, fname) 

你可以在循环中使用它:

for fname in walkPDFfiles('.'):
    print(fname, 'is PDF file.')