Привет, у меня есть приложение, которое иногда сообщает, что файл не существует, даже когда он это делает, я использую os.path.exists, и файл находится в смонтированной сети доля. Я на OSX Yosemite, python 2.7.9, и у меня есть права доступа к файлу. Вот что странно. Первая команда ниже сообщает False
. Затем я запустил ее, но изменил один из символов в имени файла на нижний регистр (TestVendorid_VerifyLog.txt
), запустил его снова, и он сообщает True
! Затем снова запустите его с верхним регистром (TestVendorId_VerifyLog.txt
), и он сообщает True
! Что происходит? Это вполне согласуется с тем, что он возвращает True
большую часть времени, но затем внезапно возвращается False
, после чего я могу повторить упражнение ниже.python os.path.exists сообщает False, когда файлы есть
>>> import os
>>> os.path.exists("/Volumes/platform-deliveries-103_1/TEST/TestVendorId.itmsp/TestVendorId_VerifyLog.txt")
False
>>> os.path.exists("/Volumes/platform-deliveries-103_1/TEST/TestVendorId.itmsp/TestVendorid_VerifyLog.txt")
True
>>> os.path.exists("/Volumes/platform-deliveries-103_1/TEST/TestVendorId.itmsp/TestVendorId_VerifyLog.txt")
True
>>>
UPDATE 1:
Когда докладывает True
, я побежал это:
>>> os.stat("/Volumes/platform-deliveries-103_1/TEST/TestVendorId.itmsp/TestVendorId_VerifyLog.txt")
posix.stat_result(st_mode=33216, st_ino=5351561660274954203, st_dev=771751953L, st_nlink=1, st_uid=504, st_gid=20, st_size=38552, st_atime=1428492003, st_mtime=1428589374, st_ctime=1428589374)
UPDATE 2:
ОК, теперь я могу повторить это, и это, безусловно, кэш вещь. Я удаляю файл TestVendorId_VerifyLog.txt на своем локальном Mac, а затем воссоздаю файл на другой рабочей станции (этот файл находится в сетевом ресурсе). Затем я получаю False на своем Mac. Если я изменю букву в имени файла команды os.path.exists, похоже, что os.path.exists более внимательно ищут файл и находит его. Так что мне нужна команда «Обновить Finder» в python перед запуском команды.
Вы работаете в файловой системе, чувствительной к регистру? Другой случай - это другой файл. Linux чувствителен к регистру. –
Но, 2-й и 3-й os.path.exists оба проходят True! – speedyrazor
Какой файл действительно находится в вашей файловой системе? Он чувствителен к регистру? Я согласен с тем, что проблема в любом случае, но мы все же хотим знать, чтобы помочь понять проблему. –