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

时间:2018-08-29 08:56:44

标签: python windows macos path network-drive

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

Mac:/Volumes/myraid/projects/file.txt

Windows X:\projects\file.txt

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

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

2 个答案:

答案 0 :(得分:1)

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

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"))

答案 1 :(得分:0)

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

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

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