使用python删除文件夹和子文件夹中的pdf文件?

时间:2015-02-08 07:10:31

标签: python python-2.7 pdf delete-file

我尝试删除300个pdf文件。所有pdf文件都是不同的名称,它们都分布在一个大文件夹中,该文件夹分为很多子文件夹和子子文件夹。我怎么能用python(我使用python 2.7.8)?

4 个答案:

答案 0 :(得分:7)

使用shutil.rmtree,可以递归删除目录。

import shutil
shutil.rmtree('/path/to/directory/that/contains/pdfs')

如果目录包含非pdf文件的其他文件,请使用以下代码(使用os.walk递归遍历目录,并使用os.remove / os.unlink删除pdf文件)。

import os

for parent, dirnames, filenames in os.walk('/path/to/the/directory'):
    for fn in filenames:
        if fn.lower().endswith('.pdf'):
            os.remove(os.path.join(parent, fn))

答案 1 :(得分:3)

如果您只想删除pdf文件,则可以使用os.walk功能和fnmatch.fnmatch功能。

import os
from fnmatch import fnmatch

for dirpath, dirnames, filenames in os.walk(os.curdir):
    for file in filenames:
        if fnmatch(file, '*.pdf'):
            os.remove(os.path.join(dirpath, file))

答案 2 :(得分:2)

os.chdir更改目录。只需做一些调整就可以找到其他目录

 #!/usr/bin/env python
    import glob
    import os
    directory='/path/folder1/folder2'
    os.chdir(directory)
    files=glob.glob('*.pdf')
    for filename in files:
        os.unlink(filename)

答案 3 :(得分:0)

假设您想要在维护子文件夹树的同时删除文件,您可以使用递归算法:

import os

def recursively_remove_files(f):
    if os.path.isfile(f):
        os.unlink(f)
    elif os.path.isdir(f):
        map(recursively_remove_files, [os.path.join(f,fi) for fi in os.listdir(f)])

recursively_remove_files(my_directory)