Как заставить Python использовать /
в качестве разделителя пути (для glob
, os.path
и т. д.) даже в Windows?
Я пробовал os.sep = '/'
, но это не работает:
import os, glob
os.sep = '/'
os.path.sep = '/'
for f in glob.glob('D:/Temp/**/*', recursive=True):
print(f)
# D:/Temp\New folder
# D:/Temp\New Text Document.txt
print(os.path.join('D:/', 'Temp', 'hello'))
# D:/Temp\hello
Я хотел бы избежать хаков, таких как добавление .replace('\\', '/')
для каждого пути, поэтому связанные вопросы, такие как Почему бы os.path.join не использовать os.path.sep или os.sep? не отвечайте на него.
Я также пробовал:
import posixpath as path
print(path.normpath(path.join('D:\\Temp', 'hello')))
# D:\Temp/hello # path.join has correctly use forward slashes
но здесь \
не заменяется на /
.
/
как хак, но в Windows оба принимаются как косые черты, поэтому это довольно безопасный подход к нормализации этих путей. Я бы поставил вокруг него специальное условное обозначение для Windows, потому что в Linux `\` можно использовать как разделитель пути, не относящийся к пути. Вы можете попробовать использовать pathlib для абстрагирования путей, но нет способа просто сказать Python всегда использовать/
в Windows в функциях stdlib. - person facelessuser   schedule 03.12.2020