Как получить cwd в формате, зависящем от оболочки?

Поскольку я использую Windows cmd.exe и msysgit bash, попытка доступа к выходным данным Windows-пути с помощью os.getcwd() приводит к тому, что Python пытается получить доступ к пути, начинающемуся с буквы диска и двоеточия, например C:\, который bash правильно определяет недопустимый unix-путь, который вместо этого должен начинаться с /c/ в этом примере. Но как я могу изменить путь Windows, чтобы он стал его msys-эквивалент iff скрипт выполняется внутри bash?


person Tobias Kienzler    schedule 18.05.2016    source источник


Ответы (1)


Уродливо, но должно работать, если вы не создадите переменную среды SHELL=bash для Windows:

def msysfy(dirname):
    import os
    try:
        shell = os.environ['SHELL']
    except KeyError:  # by default, cmd.exe has no SHELL variable
        shell = 'win'
    if os.path.basename(shell)=='bash' and dirname[1] == ':':
        return '/' + dirname[0].lower() + '/' + dirname[2:]
        # don't worry about the other backslashes, msys handles them
    else:
        return dirname
person Tobias Kienzler    schedule 18.05.2016