os.path.join
Python был описан как «в основном бессмысленный», поскольку он отбрасывает любые аргументы, предшествующие аргументу, содержащему начальную косую черту. Если оставить в стороне то, что это преднамеренное и задокументированное поведение, существует ли легкодоступная функция или шаблон кода, который не отбрасывается таким образом?
Учитывая HOMEPATH=\users\myname
, следующее будет отбрасывать начало пути
print os.path.join('C:\one', os.environ.get("HOMEPATH"), 'three')
результат:
\Users\myname\three
желанный:
C:\one\Users\myname\three
Меня это несколько раз укусило, и теперь я довольно хорошо замечаю ведущую косую черту, когда это что-то, что я написал, но как насчет того, когда вы не знаете, как выглядит входящая строка, как в этом примере ?
args = [a[1:] for a in args if a.startswith('\\') else a]
или что-то в этом роде. Я подозреваю, что большинство людей понимают, как это должно работать. В качестве альтернативы исправьте HOMEPATH; в Windows это должно быть в корне fs, но если вы используете его по-другому, вы должны сделать так, чтобы он выглядел как относительный путь, а не как абсолютный. - person dash-tom-bang   schedule 21.02.2013os.path.join()
это делает. - person Martijn Pieters   schedule 21.02.2013