Использование абсолютных путей unix в windows с python

Я создаю приложение, которое хранит blob-файлы на жестком диске, но этот скрипт должен работать как в Linux, так и в Windows, проблема в том, что я хочу дать ему абсолютный путь от корня файловой системы, а не по отношению к файлам проекта , это потому, что я использую git и не хочу иметь дело с исключением всех этих файлов из синхронизации.

Поэтому я хотел бы иметь что-то вроде этого:

path = '/var/lib/blob_files/' file = open(path+'myfile.blob', 'w') 

и получить файл в unix по адресу:

 /var/lib/blob_files/myfile.blob 

и в окнах:

 C:\var\lib\blob_files\myfile.blob 

он также может относиться к домашней папке пользователя (/ home / user в unix и C: / Users / User в окнах), но я думаю, что проблема очень похожа.

Как я могу достичь этого? есть ли какая-либо библиотека или функция, которые могут помочь мне прозрачно преобразовывать эти пути, не спрашивая, в каком платине работает скрипт?

Из моих двух вариантов, абсолютных от корня или родственника из домашней папки, которую вы рекомендуете использовать?

Заранее благодарим за любые советы по этому поводу.

2 Solutions collect form web for “Использование абсолютных путей unix в windows с python”

Используйте os.path.abspath() , а также os.path.expanduser() для файлов, относящихся к домашнему каталогу пользователя:

 print os.path.abspath("/var/lib/blob_files/myfile.blob") >>> C:\var\lib\blob_files\myfile.blob print os.path.abspath(os.path.expanduser("~/blob_files/myfile.blob")) >>> C:\Users\jerry\blob_files\myfile.blob 

Они будут «делать правильные вещи» для путей Windows и POSIX.

expanduser() не изменит путь, если в нем нет ~ , поэтому вы можете безопасно использовать его со всеми путями. Таким образом, вы можете легко написать функцию обертки:

 import os def fixpath(path): return os.path.abspath(os.path.expanduser(path)) 

Обратите внимание, что используемая буква диска будет диском, указанным текущим рабочим каталогом процесса Python, обычно это каталог, в котором находится ваш скрипт (если он запускается из проводника Windows, и если ваш скрипт не изменит его). Если вы хотите заставить его всегда быть C: вы можете сделать что-то вроде этого:

 import os def fixpath(path): path = os.path.normpath(os.path.expanduser(path)) if path.startswith("\\"): return "C:" + path return path 

От ответа Blenders на пути к независимым от платформы файлам?

 >>> import os >>> os.path.join('app', 'subdir', 'dir', 'filename.foo') 'app/subdir/dir/filename.foo' 
  • Сценарий python, который активирует virtualenv, а затем запускает другой скрипт python?
  • pyHook перестает получать события нажатия клавиши (случайным образом)?
  • OpenCV для Python 3.x под Windows
  • Исправить синтаксис mt.exe для разрешения проблем импорта pyodbc
  • Компилятор HTMLHelp отлично работает из командной строки, но не запускается из сценария или пакетного файла
  • Использование Windows Python из Cygwin
  • Какую версию Visual Studio и / или MinGW мне нужно для создания модулей расширения для данной версии Python?
  • Установка Python 3.0 на Cygwin
  •  
    Interesting Posts for Van-Lav

    Python, переопределение метода унаследованного класса

    Как использовать другую версию Python в venv из стандартной библиотеки? (Не virtualenv!)

    открыть (файл) из любого места

    Элегантный способ избежать .put () на неизмененных объектах

    Как извлечь только 3 собственных вектора изображения nxn в opencv?

    Как я могу логировать маску массива, используя скопированные сравнения?

    Каков предпочтительный способ реализации hook или callback в Python?

    «AttributeError» при попытке создать экран консоли с помощью urwid

    как использовать scipy.integrate, чтобы получить объем усеченной сферы?

    urllib2 открыватель зависает, если он запускается внутри потока

    Как получить доступ к id / widget из другого класса из файла kivy (.kv)?

    Проблема округления на Python

    Пример использования msilib для создания .msi-файла из модуля python

    Привет, я просто установил запросы с помощью pip, но я не могу их импортировать

    сохранение загруженных фотографий и документов – файловая система и база данных blob

    Python - лучший язык программирования в мире.