Comment identifier si un fichier est un fichier ou un répertoire normal à l'aide de python

129

Comment vérifier si un fichier est un fichier normal ou un répertoire en utilisant python?

Keith Smiley
la source

Réponses:

36

Comme d'autres réponses l'ont dit, os.path.isdir()et os.path.isfile()c'est ce que vous voulez. Cependant, vous devez garder à l'esprit que ce ne sont pas les deux seuls cas. À utiliser os.path.islink()pour les liens symboliques par exemple. De plus, ils reviennent tous Falsesi le fichier n'existe pas, vous voudrez donc probablement vérifier avec os.path.exists()également.

rétracile
la source
10

Python 3.4 a introduit le pathlibmodule dans la bibliothèque standard, qui fournit une approche orientée objet pour gérer les chemins du système de fichiers. Les méthodes pertinentes seraient .is_file()et .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 est également disponible sur Python 2.7 via le module pathlib2 sur PyPi.

joelostblom
la source
7
import os

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

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

Erenon
la source
2

essaye ça:

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

Si vous ne faites que parcourir un ensemble de répertoires, vous feriez peut-être mieux d'essayer de os.chdirdonner une erreur / un avertissement en cas d'échec:

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
la source