2011-11-20 29 views
5

Sto scrivendo uno script python che dovrebbe gestire i miei file in esecuzione. Voglio assicurarmi che la cartella di origine e di destinazione esista prima di eseguirla e posso farlo con os.path.exists. Tuttavia, ho un set di nomi di battute runner<i>. C'è un modo per verificare che ci siano alcune cartelle che iniziano con quel nome?controlla se c'è una cartella con un nome che inizia con una stringa specifica

Ad esempio, se nel percorso /path/to/runners Ho almeno una cartella denominata runner:

/path/to/corridori/$ ls file1.txt
file2.txt
cartella1
folder2
runner1 runner35
zfolder

Quindi il risultato è vero. Rimuovi il corridore1 e runner35 e sarà falso.

risposta

9

Si potrebbe fare la seguente:

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

che utilizza l'utile any function e generator expression. La risposta di

+0

+1 per questo. 'glob' è utile se si vuole effettivamente utilizzare l'elenco dei percorsi di corrispondenza, ma un test rapido non rigoroso mostra che questo metodo è circa il doppio più veloce di glob –

4

Mark Longair è abbastanza bene, e un (equivalente) alternativa per questo tipo di espressione è quella di utilizzare 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' 
Problemi correlati