Python: os.getcwd () случайно завершает работу на подключенном сетевом диске - PullRequest
1 голос
/ 13 февраля 2020

Я нахожусь на Debian, используя python3 .7. У меня есть сетевой диск, который я обычно подключаю к /media/N_drive с dir_mode=0777 и file_mode=0777. У меня обычно нет проблем с чтением / записью файлов на этом сетевом диске.

Иногда, особенно вскоре после монтирования диска, если я пытаюсь запустить любой сценарий Python с os.getcwd() (включая любые импортированные библиотеки, такие как pandas) Я получаю ошибку FileNotFoundError: [Errno 2] No such file or directory. Если я перехожу на локальный диск (cd /media/), сценарий работает нормально.

При чтении, похоже, эта ошибка означает, что рабочий каталог был удален. Тем не менее, я все еще могу перейти в каталог, создавать файлы и т. Д. c. когда я в раковине. Только у Python os.getcwd() есть проблемы.

Что более странно, это поведение непредсказуемо. Обычно, если я подожду ~ 1 час после установки диска, тот же скрипт будет работать нормально.

Я подозреваю, что это как-то связано с тем, как установлен диск? Есть идеи, как ее устранить?

1 Ответ

1 голос
/ 13 февраля 2020

Мне кажется, проблема с монтированием, например, сетевой диск будет отключен и снова подключен. Таким образом, ваш диск больше не действителен. Примечание: cwd указывает на диск + inode, это не имя (которое вы увидите). Так что /media/a отличается от /media/a после переподключения.

Если вы смотрите, как решить монтаж, вы находитесь не в том месте. Попробуйте Unix & Linux дочерний сайт или Serverfault (также дочерний сайт).

Если вы ищете, как решить программно: сохраните cwd в начале скрипта и используйте os.path.join() при каждом доступе к пути, поэтому что вы заставляете абсолютные пути, а не относительные пути, и поэтому вы должны быть в правильном месте. Это не сохранить, если вы прочитали файл во время отключения.

...