Преобразование пути к файлу на сетевом диске из Macos в Windows - PullRequest
0 голосов
/ 29 августа 2018

Я хочу выбрать файл на моем Mac и хочу, чтобы файл открывался на компьютере с Windows по пути, который я ввел на Mac. У меня есть сервер, на котором расположены файлы, которые отображаются следующим образом:

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

Windows X:\projects\file.txt

Можно ли как-нибудь преобразовать путь от Mac в любой файл на сервере, который будет открыт на любой машине с Windows, которая может получить доступ к серверу? Код для манипулирования путем должен быть выполнен на машине с Windows.

Редактировать: Моя главная проблема - это передняя часть пути, потому что Windows назначает разные буквы для каждого отдельного диска (например, X:\). Особенно, когда у меня есть несколько сетевых дисков, и я хочу иметь возможность выбирать файлы из всех них.

Ответы [ 2 ]

0 голосов
/ 29 августа 2018

Не знаю, насколько это элегантное решение. Также это решение не является безопасным для одного и того же имени файла с одним и тем же путем к файлу, существующего на нескольких дисках, но оно работает для меня.

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"))
0 голосов
/ 29 августа 2018

Вы можете использовать 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 для получения операционной системы, в которой в данный момент находится программа, чтобы вы могли соответствующим образом отредактировать начало вашего пути.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...