我的台式计算机正在运行Linux Mint 19.1。另一台计算机正在运行Linux Mint 18.3。两台计算机都在运行Samba。我正在尝试让我的桌面python代码检查另一台计算机上的文件。在Caja文件管理器中,该路径显示为“ smb:// lenovo2 / kwpvr /”。我可以在Caja中复制,删除或重命名文件。
以前曾问过这个问题,但答案只针对其他操作系统(Windows)。 os.path.isfile() returns false for file on network drive
#!/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。
答案 0 :(得分:2)
os.path
仅适用于可以通过本地文件系统访问的文件。它不适用于smb://
或https://
之类的URI。
如果要通过Linux上的本地文件系统使网络共享上的文件可用,则必须挂载它们,例如:
mount -t cifs //host/myshare /mnt/mypath
然后使用os.path.exists("/mnt/mypath/hello.txt")
或者,使用SMB / CIFS API代替os.path
。