I'm writing a cross platform file explorer in python. I am trying to convert any backslashes in a path into forward slashes in order to deal with all paths in one format.
I've tried not only using string.replace(str, '\\\\', '/'), but also creating a method manually to search through the string and replace the instances, and both do not work properly, as a path name such as:
\dir\anotherdir\foodir\more
changes to:
/dir/anotherdir\x0oodir/more
I am assuming that this has something to do with how Python represents escape characters or something of the sort. How do I prevent this happening?
Doesn't this work:
>>> s = 'a\\b'
>>> s
'a\\b'
>>> print s
a\b
>>> s.replace('\\','/')
'a/b'
?
EDIT:
Of course this is a string-based solution, and using os.path is wiser if you're dealing with filesystem paths.
Elaborating this answer , with pathlib you can use the as_posix method:
>>> import pathlib
>>> p = pathlib.PureWindowsPath(r'\dir\anotherdir\foodir\more')
>>> print(p)
\dir\anotherdir\foodir\more
>>> print(p.as_posix())
/dir/anotherdir/foodir/more
>>> str(p)
'\\dir\\anotherdir\\foodir\\more'
>>> str(p.as_posix())
'/dir/anotherdir/foodir/more'
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.