Jak określić, czy plik jest zwykłym plikiem lub katalogiem


132

Jak sprawdzić, czy plik jest zwykłym plikiem lub katalogiem używającym Pythona?

Odpowiedzi:



37

Jak powiedziały inne odpowiedzi os.path.isdir()i os.path.isfile()są tym, czego chcesz. Należy jednak pamiętać, że to nie jedyne dwa przypadki. Użyj os.path.islink()na przykład dla linków symbolicznych. Co więcej, wszystkie zwracają, Falsejeśli plik nie istnieje, więc prawdopodobnie będziesz również chciał to sprawdzić os.path.exists().


11

Python 3.4 wprowadziła ten pathlibmoduł w bibliotece standardowej, która zapewnia zorientowaną podejścia obiektowego do ścieżek uchwyt systemu plików. Stosowanymi metodami byłyby .is_file()i .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 jest również dostępne w Pythonie 2.7 za pośrednictwem modułu pathlib2 na PyPi.




2

Spróbuj tego:

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

0

Aby sprawdzić, czy plik / katalog istnieje :

os.path.exists(<path>)

Aby sprawdzić, czy ścieżka jest katalogiem :

os.path.isdir(<path>)

Aby sprawdzić, czy ścieżka jest plikiem :

os.path.isfile(<path>)

-1

Jeśli tylko przechodzisz przez zestaw katalogów, może być lepiej po prostu spróbować os.chdirpodać błąd / ostrzeżenie, jeśli to się nie powiedzie:

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))
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.