我可以在python中同时删除多个文件扩展名

时间:2013-08-08 21:28:00

标签: python python-2.7 python-3.x

是否可以添加多个扩展程序(例如pattern =(' .txt'或' .doc')

import os, fnmatch
def find_files(directory, pattern):

    for root, dirs, files in os.walk(directory):

        for basename in files:
            if fnmatch.fnmatch(basename, pattern):
                filename = os.path.join(root, basename)

                yield filename

def find_files_to_list(directory, pattern):

wanted_files = find_files_to_list('/original_project/', '*.html')

for filename in find_files('/copy_project/', '*'):

    if filename not in wanted_files:
        os.remove(filename)

    file_list = []
    for root, dirs, files in os.walk(directory):
        for basename in files:
            if fnmatch.fnmatch(basename, pattern):
                filename = os.path.join(root, basename)
                file_list.append(filename)

    return file_list

wanted_files = find_files_to_list('/original_project/', '*.html')

for filename in find_files('/copy_project/', '*'):

    if filename not in wanted_files:
        os.remove(filename)

1 个答案:

答案 0 :(得分:3)

好像你只想要一个基本的字符串操作,没有?

if filename.endswith(('.txt','.doc')):
    os.remove(filename)

或者,否定它,

if not filename.endswith('.html'):
    os.remove(filename)

.endswith接受您想要匹配的元组,如果有匹配则返回True,所以如果您想保留.html和.txt扩展名:

if not filename.endswith(('.html','.txt')):
    os.remove(filename)