os.path.isfile () возвращает false для файла на сетевом диске Linux smb - PullRequest
3 голосов
/ 03 июля 2019

Мой настольный компьютер работает под управлением Linux Mint 19.1.Другой компьютер работает под управлением Linux Mint 18.3.Оба компьютера работают под управлением Samba.Я пытаюсь проверить на своем компьютере код Python для компьютера на другом компьютере.В файловом менеджере Caja он показывает путь как «smb: // lenovo2 / kwpvr /».Я могу скопировать, удалить или переименовать файл в Caja.

Этот вопрос ранее задавался, но ответ касался только той другой операционной системы (Windows). os.path.isfile () возвращает false для файла на сетевом диске

#!/usr/bin/python3
import os
print(os.path.isfile("smb://lenovo2/kwpvr/kwpvr3.db"))  # False
print (os.path.isfile("//lenovo2/kwpvr/kwpvr3.db"))     # False
print (os.path.isfile("smb:\\lenovo2\kwpvr\kwpvr3.db")) # False
print (os.path.isfile("\\lenovo2\kwpvr\kwpvr3.db"))     # False

print (os.path.exists("smb://lenovo2/kwpvr/kwpvr3.db")) # False
print (os.path.exists("//lenovo2/kwpvr/kwpvr3.db"))     # False
print (os.path.exists("smb:\\lenovo2\kwpvr\kwpvr3.db")) # False
print (os.path.exists("\\lenovo2\kwpvr\kwpvr3.db"))     # False

os.path.exists () всегда возвращает False для любой перестановки имени файла, которое я могу найтис.

1 Ответ

2 голосов
/ 03 июля 2019

os.path работает только для файлов, к которым можно получить доступ через локальную файловую систему. Он не работает с URI, такими как smb:// или https://.

Если вы хотите сделать файлы на общих сетевых ресурсах доступными через локальную файловую систему в Linux, вы должны смонтировать их, например:

mount -t cifs //host/myshare /mnt/mypath

, а затем используйте os.path.exists("/mnt/mypath/hello.txt")

Либо используйте API SMB / CIFS вместо os.path.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...