2011-11-20 7 views
5

Estoy escribiendo un script python que se supone que administra mis archivos en ejecución. Quiero asegurarme de que la carpeta de origen y destino existe antes de ejecutarlo y puedo hacerlo con os.path.exists. Sin embargo, tengo un conjunto de nombres de carpeta runner<i>. ¿Hay alguna manera de verificar que haya algunas carpetas que comiencen con ese nombre?comprobando si hay una carpeta con un nombre que comience con una cadena específica

Por ejemplo, si en el camino /path/to/runners que tienen al menos una carpeta con el nombre runner:

/ruta/a/corredores/$ ls file1.txt
file2.txt
carpeta1
carpeta2
runner1 runner35
zfolder

Entonces el resultado es cierto. Elimine runner1 y runner35 y será falso.

Respuesta

9

que podría hacer lo siguiente:

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

que utiliza el útil any function y una generator expression. La respuesta de

+0

+1 para esto. 'glob' es útil si realmente desea utilizar la lista de rutas coincidentes, pero una prueba rápida no rigurosa muestra que este método es aproximadamente el doble de rápido que glob –

4

Marcos Longair es bastante fina, y un (equivalente) alternativa para este tipo de expresión es el uso de pegote:

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' 
Cuestiones relacionadas