Поскольку я использую Windows cmd.exe
и msysgit bash
, попытка доступа к выходным данным Windows-пути с помощью os.getcwd()
приводит к тому, что Python пытается получить доступ к пути, начинающемуся с буквы диска и двоеточия, например C:\
, который bash
правильно определяет недопустимый unix-путь, который вместо этого должен начинаться с /c/
в этом примере. Но как я могу изменить путь Windows, чтобы он стал его msys-эквивалент iff скрипт выполняется внутри bash
?
Как получить cwd в формате, зависящем от оболочки?
comment
по теме: Как запустить скрипт, который может определить, запущена ли оболочка cmd.exe или gnu mingw
- person Tobias Kienzler   schedule 18.05.2016
Ответы (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