0

有没有办法添加多个扩展名(例如模式=('. 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)
4

1 回答 1

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)
于 2013-08-08T21:35:50.550 回答