So ermitteln Sie mithilfe von Python, ob eine Datei eine normale Datei oder ein normales Verzeichnis ist

129

Wie können Sie mit Python überprüfen, ob eine Datei eine normale Datei oder ein Verzeichnis ist?

Keith Smiley
quelle

Antworten:

36

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().

retracile
quelle
9

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.

joelostblom
quelle
7
import os

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

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

erenon
quelle
2

Versuche dies:

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

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))
Philip Kearns
quelle