我必须处理很多文件。如何区分哪个是PDF文件而哪个不是?我在Windows上运行Python。谢谢你的帮助。
答案 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.')