Niektóre niekonwencjonalne sytuacja dzieje się tutaj.
os.path.isfile()
powróci True
dla zwykłych plików dla plików urządzeń będzie to False
.
Ale jak dla os.path.exists()
, documetation stwierdza, że False
może być zwrócony, jeśli „uprawnienie nie jest przyznane wykonać os.stat()
”. FYI realizacja os.path.exists
jest:
def exists(path):
"""Test whether a path exists. Returns False for broken symbolic links"""
try:
os.stat(path)
except OSError:
return False
return True
Tak więc, jeśli os.stat
zawodzi cię nie widzę, jak ls
może mieć udało (ls
AFAIK wzywa również stat() syscall). Tak, sprawdź co os.stat('/dev/bsd0')
jest podnoszenie zrozumieć, dlaczego nie jesteś zdolny do bycia wykryć istnienie tego konkretnego pliku urządzenia z os.path.exists
, ponieważ używając os.path.exists()
ma jest poprawnym sposobem sprawdzenia istnienia bloku plik urządzenia.
Spróbuj 'os.path.isabs'? –