Jak sprawdzić, czy plik jest zwykłym plikiem lub katalogiem używającym Pythona?
Jak sprawdzić, czy plik jest zwykłym plikiem lub katalogiem używającym Pythona?
Odpowiedzi:
os.path.isdir()i os.path.isfile()powinien dać ci to, czego chcesz. Zobacz:
http://docs.python.org/library/os.path.html
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().
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.
import os
if os.path.isdir(d):
print "dir"
else:
print "file"
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>)
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))