开发者社区> 问答> 正文

os.path.isfile()对于linux smb网络驱动器上的文件返回false

我的台式计算机正在运行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。

展开
收起
祖安文状元 2020-01-06 15:17:22 642 0
1 条回答
写回答
取消 提交回答
  • 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。

    2020-01-06 15:17:31
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Alibaba Cloud Linux 3 发布 立即下载
ECS系统指南之Linux系统诊断 立即下载
ECS运维指南 之 Linux系统诊断 立即下载