Учитывая путь к ../hello/world/foo.txt или ../..hello/world/bar.txt, как мне безопасно вернуть hello/world/foo.txt или hello/world/bar.txt с Python?

Я просто хотел бы избавиться от любых ссылок с префиксом относительного пути

../hello/world/foo.txt      => hello/world/foo.txt
../../hello/world/bar.txt   => hello/world/bar.txt
./hello/world/boo.txt       => hello/world/boo.txt
hello/world/moo.txt         => hello/world/moo.txt
1
jchi2241 2 Июл 2019 в 07:50

2 ответа

Вы можете использовать path.split ('..') [- 1] .strip ('.'). strip ('/')

0
nag 2 Июл 2019 в 05:04

Вы можете попробовать так,

s = '../../hello/world/bar.txt'
>>> "/".join(i for i in s.split('/') if '.' not in i[0])
'hello/world/bar.txt'

Вы можете использовать os.path.join так,

>>> os.path.join(*[i for i in s.split('/') if '.' not in i[0]])
'hello\\world\\bar.txt'
0
shaik moeed 2 Июл 2019 в 05:12