2009-06-13 6 views
6

Wiem, jak usuwać pojedyncze pliki, jednak zagubiłem się w mojej implementacji usuwania wszystkich plików w katalogu jednego typu.Usuwanie plików według typu w Pythonie w systemie Windows

Say katalog jest \ myfolder

chcę usunąć wszystkie pliki, które są pliki .config, ale nic do pozostałych. Jak to zrobić?

Dzięki Uprzejmie

+0

Czy chcesz usunąć wszystkie pliki *, które są .config? – Triptych

+0

Tak! Naprawiono Przepraszam za to –

+0

czy chcesz usunąć wszystkie pliki .config pod pewną ścieżką? jeśli chcesz tylko usunąć plik .config, możesz po prostu zrobić os.remove (". config") –

Odpowiedz

4

chciałbym zrobić coś jak następuje:

import os 
files = os.listdir("myfolder") 
for f in files: 
    if not os.path.isdir(f) and ".config" in f: 
    os.remove(f) 

on listę plików w katalogu, a jeśli nie jest to katalog i nazwa pliku jest „.config” nigdzie w nim, Usuń to. Musisz albo znajdować się w tym samym katalogu co mój folder, albo podać pełną ścieżkę do katalogu. Jeśli chcesz zrobić to rekurencyjnie, użyłbym os.walk function.

+0

I faktycznie oznaczało plików, nie lornetka składana. Niestety Dan –

+0

Nie twoja wina - ale ta odpowiedź jest teraz nieistotna z powodu OP edycji tego pytania. – Triptych

+0

Ciągle dobrym przykładem iteracji! –

15

pomocą modułu glob:

import os 
from glob import glob 

for f in glob ('myfolder/*.config'): 
    os.unlink (f) 
+1

+1: Tak, glob jest tutaj właściwym podejściem (jeśli nie chcesz oczywiście chodzić w podkatalogach - to wymagałoby os.walk). –

1

Tu ya go:

import os 

# Return all files in dir, and all its subdirectories, ending in pattern 
def gen_files(dir, pattern): 
    for dirname, subdirs, files in os.walk(dir): 
     for f in files: 
     if f.endswith(pattern): 
      yield os.path.join(dirname, f) 


# Remove all files in the current dir matching *.config 
for f in gen_files('.', '.config'): 
    os.remove(f) 

Należy również zauważyć, że gen_files można łatwo przepisany do zaakceptowania krotki wzorców, ponieważ str.endswith akceptuje krotki

Powiązane problemy