Cómo identificar si un archivo es un archivo o directorio normal usando Python

129

¿Cómo se verifica si un archivo es un archivo normal o un directorio usando Python?

Keith Smiley
fuente

Respuestas:

36

Como han dicho otras respuestas, os.path.isdir()y os.path.isfile()son lo que quieres. Sin embargo, debe tener en cuenta que estos no son los únicos dos casos. Uso os.path.islink()para enlaces simbólicos, por ejemplo. Además, todos estos regresan Falsesi el archivo no existe, por lo que probablemente también desee consultarlo os.path.exists().

retroceder
fuente
10

Python 3.4 introdujo el pathlibmódulo en la biblioteca estándar, que proporciona un enfoque orientado a objetos para manejar las rutas del sistema de archivos. Los métodos relevantes serían .is_file()y .is_dir():

In [1]: from pathlib import Path

In [2]: p = Path('/usr')

In [3]: p.is_file()
Out[3]: False

In [4]: p.is_dir()
Out[4]: True

In [5]: q = p / 'bin' / 'vim'

In [6]: q.is_file()
Out[6]: True

In [7]: q.is_dir()
Out[7]: False

Pathlib también está disponible en Python 2.7 a través del módulo pathlib2 en PyPi.

joelostblom
fuente
7
import os

if os.path.isdir(d):
    print "dir"
else:
    print "file"
Dominic Rodger
fuente
2

os.path.isdir('string')
os.path.isfile('string')

Erenon
fuente
2

prueba esto:

import os.path
if os.path.isdir("path/to/your/file"):
    print "it's a directory"
else:
    print "it's a file"
uolot
fuente
-1

Si solo está recorriendo un conjunto de directorios, podría ser mejor simplemente intentar os.chdirdar un error / advertencia si falla:

import os,sys
for DirName in sys.argv[1:]:
    SaveDir = os.getcwd()
    try:
        os.chdir(DirName)
        print "Changed to "+DirName
        # Do some stuff here in the directory
        os.chdir(SaveDir)
    except:
        sys.stderr.write("%s: WARNING: Cannot change to %s\n" % (sys.argv[0],DirName))
Philip Kearns
fuente