Comment vérifier si un fichier est un fichier normal ou un répertoire en utilisant python?
Comment vérifier si un fichier est un fichier normal ou un répertoire en utilisant python?
Réponses:
os.path.isdir()et os.path.isfile()devrait vous donner ce que vous voulez. Voir:
http://docs.python.org/library/os.path.html
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.
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.
import os
if os.path.isdir(d):
print "dir"
else:
print "file"
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))