我的台式计算机正在运行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。
os.path仅适用于可以通过本地文件系统访问的文件。它不适用于URI smb://或https://。
如果要通过Linux上的本地文件系统使网络共享上的文件可用,则必须安装它们,例如:
mount -t cifs //host/myshare /mnt/mypath
然后使用 os.path.exists("/mnt/mypath/hello.txt")
另外,也可以使用SMB / CIFS API代替os.path。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。