Я написал код на Python, который использует /, чтобы сделать определенный файл в папке, если я хочу использовать код в Windows, он не будет работать, есть ли способ, с помощью которого я могу использовать код в Windows и Linux.
В Python я использую этот код:
pathfile=os.path.dirname(templateFile)
rootTree.write(''+pathfile+'/output/log.txt')
Когда я буду использовать свой код в предположении, что машина Windows, мой код не будет работать.
Как использовать «/» (разделитель каталогов) в Linux и Windows?
/
в каталогах пути. Какие конкретные проблемы у вас возникли? Опубликовать код, который иллюстрирует проблему.Ответы:
Использование
os.path.join()
. Пример:os.path.join(pathfile,"output","log.txt")
.В вашем коде это будет:
rootTree.write(os.path.join(pathfile,"output","log.txt"))
источник
os.path.join
использует более сложную логику для сопоставления нескольких относительных компонентов пути. Когда вы просто хотите связать их,os.sep.join
это правильный выбор.Использование:
чтобы увидеть, как разделитель выглядит на текущей ОС.
В вашем коде вы можете использовать:
источник
Вы можете использовать os.sep :
источник
os.path.normpath(pathname)
также следует упомянуть, поскольку он преобразует/
разделители пути в\
разделители в Windows. Он также разрушается избыточные uplevel ссылки ... то есть,A/B
иA/foo/../B
иA/./B
все сталиA/B
. И если вы Windows, все это становитсяA\B
.источник
os.path.normpath('a/b/c/d/file.ext')
чемos.path.join('a','b','c','d','file.ext')
когда мне нужно указать длинный путь.os.path.join
просто присоединяется ко всему при условии. например,join("a/b", "c\d")
даетa/b\c\d
(на окнах). Но я могу получить ожидаемый результат с правильной комбинациейjoin
иnormpath
, например,a\b\c\d
(на окнах)Если вам посчастливилось запустить Python 3.4+, вы можете использовать
pathlib
:или, что эквивалентно,
источник
Несколько полезных ссылок, которые помогут вам:
источник
sep
но не мог удержаться, чтобы опубликовать это тоже (я предполагал, что ОП найдет его полезным для будущей работы) :)Сделать
import os
а затем использоватьos.sep
источник
источник
Не создавайте имена каталогов и файлов самостоятельно, используйте библиотеки Python.
В этом случае соответствующим является os.path . Особенно объединение, которое создает новое имя пути из каталога и имя файла или каталога и разделяет, который получает имя файла из полного пути.
Ваш пример будет
источник