Windows путь с двойным backsla sh in Python - PullRequest
1 голос
/ 05 августа 2020

Кажется, это очень простой c вопрос, но все же я запутался. У меня есть путь windows, содержащий backsla sh, который, чтобы избежать его особого значения, я использовал \\. Хотя я использую print, функция получения пути дает мне фактический результат:

>>> print("C:\\Users\\2.0Dev\\8\\F000B101\\POD280-51\\Resources")
C:\Users\2.0Dev\8\F000B101\POD280-51\Resources

однако, когда то же самое передается в качестве аргумента двум различным функциям в python, поведение отличается:

>>> rsrc_dir="C:\\Users\\2.0Dev\\8\\F000B101\\POD280-51\\Resources"
>>> os.path.isdir(rsrc_dir)
>>> False
>>> os.mkdir('C:\\Users\\2.0Dev\\8\\F000B101\\POD280-51\\Resources')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
WindowsError: [Error 3] The system cannot find the path specified:'C:\\Users\\2.0Dev\\8\\F000B101\\POD280-51\\Resources'

Может кто-нибудь объяснить, как две функции интерпретируют один и тот же параметр. Также, как вернуть форматированную строку так же, как функция print.

Большое спасибо.

1 Ответ

1 голос
/ 05 августа 2020

os.mkdir не создает промежуточные каталоги, поэтому это:

os.mkdir('C:\\Users\\2.0Dev\\8\\F000B101\\POD280-51\\Resources')

не сработает, если не

os.path.exists('C:\\Users\\2.0Dev\\8\\F000B101\\POD280-51')

используйте os.makedirs , если хотите рекурсивное создание каталога. Обратите внимание, что вы можете использовать os.path.join , который будет использовать разделитель, соответствующий системе, в которой он работает, в вашем случае использование будет:

rsrc_dir=os.path.join("C:\\","Users","2.0Dev","8","F000B101","POD280-51","Resources")
...