将网络驱动器上的文件的路径从 macOS 转换为 Windows



我想在我的Mac上选择一个文件,并希望使用我在Mac上输入的路径在Windows机器上打开该文件。我有一个文件所在的服务器,映射如下:

苹果电脑:/Volumes/myraid/projects/file.txt

视窗X:projectsfile.txt

有什么方法可以将 mac 的路径转换为服务器上的任何文件,以便在任何能够访问服务器的 Windows 机器上打开?操作路径的代码应在窗口计算机上执行。

编辑:我的主要问题是路径的前部,因为Windows为每个单独的驱动器分配了一个不同的字母(例如X:(。特别是当我有多个网络驱动器并且我希望能够从所有网络驱动器中选择文件时。

我不知道这是否是最优雅的解决方案。对于多个驱动器上存在的具有相同文件路径的相同文件名,此解决方案也不安全,但它对我有用。

import os.path
def findnetworkpath(path_input):    
path_input = os.path.normpath(path_input) #converts forward slashes to backward slashes
path_snippet = os.path.join(*path_input.split(os.sep)[2:]) #cuts "Volumes/myraid/" out of the path
dl = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 
drives = ['%s:' % d for d in dl if os.path.exists('%s:' % d)] #checks for existing drives
for drive in drives:
if os.path.exists(drive + "\" + path_snippet):   #checks if the path snippet is the subpath of any connected drives
return drive + "\" + path_snippet #function returns the path the windows machine has to the file
print(findnetworkpath("Volumes/myraid/projects/file.txt"))

您可以使用os.path.join(),它根据运行它的平台的规则加入目录列表。

>>> # windows
>>> os.path.join('projects', 'file.txt')
projectsfile.txt
>>> # mac osx
>>> os.path.join('projects', 'file.txt')
projects/file.txt

您还可以使用os.name来获取程序当前所在的操作系统,以便您可以相应地编辑路径的开头。

相关内容

  • 没有找到相关文章

最新更新