我想在Mac上选择一个文件,并希望使用我在Mac上输入的路径在Windows计算机上打开该文件。我有一个文件所在的服务器,映射如下:
Mac:/Volumes/myraid/projects/file.txt
Windows X:\projects\file.txt
有什么方法可以将Mac的路径转换为服务器上的任何文件,以便在任何可以访问服务器的Windows计算机上打开?操纵路径的代码应在Windows计算机上执行。
编辑:我的主要问题是路径的开头,因为Windows为每个单独的驱动器分配了不同的字母(例如X:\
)。特别是当我有多个网络驱动器并且希望能够从所有网络驱动器中选择文件时。
答案 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
来获取程序当前所在的操作系统,以便您可以相应地编辑路径的开始。