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