Wie können Sie mit Python überprüfen, ob eine Datei eine normale Datei oder ein Verzeichnis ist?
Wie können Sie mit Python überprüfen, ob eine Datei eine normale Datei oder ein Verzeichnis ist?
Antworten:
os.path.isdir()und os.path.isfile()sollte dir geben, was du willst. Siehe:
http://docs.python.org/library/os.path.html
Wie andere Antworten gesagt haben os.path.isdir()und os.path.isfile()sind, was Sie wollen. Sie müssen jedoch berücksichtigen, dass dies nicht die einzigen beiden Fälle sind. Verwenden Sie os.path.islink()für Symlinks zum Beispiel. Darüber hinaus werden alle zurückgegeben, Falsewenn die Datei nicht vorhanden ist. Daher sollten Sie wahrscheinlich auch nachfragen os.path.exists().
Python 3.4 führte das pathlibModul in die Standardbibliothek ein, die einen objektorientierten Ansatz für die Verarbeitung von Dateisystempfaden bietet. Die relavanten Methoden wären .is_file()und .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 ist auch in Python 2.7 über das pathlib2-Modul auf PyPi verfügbar.
import os
if os.path.isdir(d):
print "dir"
else:
print "file"
Wenn Sie nur eine Reihe von Verzeichnissen durchgehen, ist es möglicherweise besser, nur os.chdireinen Fehler / eine Warnung zu geben, wenn dies fehlschlägt:
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))