2011-05-24 18 views
93

Estoy tratando de crear un directorio si la ruta no existe, pero el! (no) el operador no funciona. No estoy seguro de cómo negarme en Python ... ¿Cuál es la forma correcta de hacer esto?Negación en Python

if (!os.path.exists("/usr/share/sounds/blues")): 
     proc = subprocess.Popen(["mkdir", "/usr/share/sounds/blues"]) 
     proc.wait() 
+17

Por cierto, ¿por qué no usar Python 'os.mkdir()'? – Neil

+0

No conocía la función os.mkdir(), aunque supuse que había algo así. – David

Respuesta

134

La negación en Python es not. Por lo tanto, simplemente reemplace su ! con not.

Para su ejemplo, haga lo siguiente:

if not os.path.exists("/usr/share/sounds/blues") : 
    proc = subprocess.Popen(["mkdir", "/usr/share/sounds/blues"]) 
    proc.wait() 

Para su ejemplo específico (como dijo Neil en los comentarios), que no tiene que utilizar el módulo subprocess, puede simplemente usar os.mkdir() para obtener el resultado que necesita, con una excepción adicional al manejo de la bondad.

Ejemplo:

blues_sounds_path = "/usr/share/sounds/blues" 
if not os.path.exists(blues_sounds_path): 
    try: 
     os.mkdir(blues_sounds_path) 
    except OSError: 
     # Handle the case where the directory could not be created. 
19

Python prefiere palabras clave en inglés para la puntuación. Use not x, es decir, not os.path.exists(...). Lo mismo ocurre con && y || que son and y or en Python.

7

tratan en su lugar: el operador

if not os.path.exists(pathName): 
    do this 
1

Combinando la entrada de todos los demás (no utilizan, no hay parens, utilizan os.mkdir) se obtendría ...

specialpathforjohn = "/usr/share/sounds/blues" 
if not os.path.exists(specialpathforjohn): 
    os.mkdir(specialpathforjohn) 
+1

Su código (y los OP) es un accidente que está por suceder: dos instancias de una cadena literal larga que presumiblemente debería ser idéntica. Y por favor no respondas que es solo un ejemplo, es un MALO ejemplo para los novatos. –

Cuestiones relacionadas