Wpis z mikrobloga

Mam pliki które muszą mieć określony format nazwy: S_244444_POD_.txt
Mam skrypt który przed skopiowaniem tego pliku sprawdza czy format nazwy jest ok, jeśli tak to kopiuje, jeśli nie to dodaje mu rozszerzenie .error

Zrobiłem sobie chamskiego wildcarda którym sprawdzam sobie nazwy plików za pomocą fnmatch:

wildcard = "S_[0-9][0-9][0-9][0-9][0-9][0-9]_POD_.txt"
for file in os.listdir(SOURCE_DIR):
if fnmatch.fnmatch(file, wildcard):
# Do something

Działa jak trzeba ale okazało się że:
- ilość cyfr może być mniejsza/większa od 6
- Nazwa może rozpoczynać się też od litery "T" i w tym przypadku musze wykonać inną operację a powyższa reguła oczywiście nie zadziała.

Prawidłowe nazwy plików więc mogą być następujące:

S_244444_POD_.txt
T_244444_POD_.txt
S_244_POD_.txt
Nieprawidłowe:

X_244444_POD_.txt
S_abcdef_POD_.txt
Szukałem w necie jak obsłużyć sytuacje kiedy mam mniej cyfr albo inną litere na początku ale nic nie znalazłem co mogło mi pomóc. Macie może jakieś propozycje jak to rozwiązać?

#python #programowanie
  • 12
Szukałem w necie jak obsłużyć sytuacje kiedy mam mniej cyfr albo inną litere na początku ale nic nie znalazłem co mogło mi pomóc. Macie może jakieś propozycje jak to rozwiązać?


@login_zajety_sic: No nie chce mi się wierzyć, że otworzyłeś chociaż jedną stronę o wyrażeniach regularnych, bo znalazłbyś to czego szukasz.

P.S. Tak wiem, że to masz teraz to Unix wildcardy, ale jak masz coś bardziej skomplikowanego to użyj regexów.