2011-11-20 10 views
5

Piszę skrypt Pythona, który ma zarządzać moimi uruchomionymi plikami. Chcę upewnić się, że folder źródłowy i docelowy istnieje przed uruchomieniem go i mogę to zrobić z os.path.exists. Jednak mam zestaw foldernames runner<i>. Czy istnieje sposób sprawdzenia, czy niektóre foldery zaczynają się od tej nazwy?sprawdzanie, czy istnieje folder z nazwą rozpoczynającą się od określonego ciągu znaków

Na przykład, jeśli w ścieżce /path/to/runners mam przynajmniej jeden folder o nazwie runner:

/ścieżka/do/biegaczy/$ ls plik1.txt
file2.txt
folder1
folder2
runner1 runner35
zfolder

Następnie wynik jest prawdziwy. Usuń runner1 i runner35 i będzie to fałsz.

Odpowiedz

9

Można wykonać następujące czynności:

import os 
if any(x.startswith('runner') for x in os.listdir('/path/to/runners')): 
    print "At least one entry begins with 'runner'" 

który wykorzystuje Pomocny any function i generator expression. Odpowiedź

+0

+1 dla tego. 'glob' jest użyteczne, jeśli rzeczywiście chcesz użyć listy pasujących ścieżek, ale szybki, nie rygorystyczny test pokazuje, że ta metoda jest około dwa razy szybsza od globu –

4

Mark Longair jest całkiem w porządku, i (odpowiednik) Alternatywą dla tego rodzaju wypowiedzi jest użycie glob:

import glob 
if glob.glob('/path/to/runners/runner*'): 
    print "At least one entry begins with 'runner'" 
5
import glob 

if glob.glob('/path/to/runners/runner*'): 
    print 'condition satisfied' 
Powiązane problemy