[Tutor] How to replace the '\'s in a path with '/'s?
Richard D. Moores
rdmoores at gmail.com
Sun Jul 31 17:57:02 CEST 2011
On Sun, Jul 31, 2011 at 03:34, Peter Otten <__peter__ at web.de> wrote:
> Sandip Bhattacharya wrote:
>
>> On Sat, Jul 30, 2011 at 10:28:11PM -0700, Richard D. Moores wrote:
>>> File "c:\P32Working\untitled-5.py", line 2
>>> return path.replace('\', '/')
>>> ^
>>> SyntaxError: EOL while scanning string literal
>>> Process terminated with an exit code of 1
>>
>> The first backslash up there is escaping the ending quote. This is what
>> you want:
>> return path.replace('\\', '/')
>>
>> Generally, converting slashes manually should be kept at a minimum. You
>> should be using library functions as much as possible. The experts here
>> can correct me here, but this is a roundabout way I would be doing this:
>>
>> # I use a linux machine. Using this to work with Windows paths
>> # Use os.path if you are on windows
>> import ntpath
>>
>> # Use raw strings so that backslash doesnt matter
>> path=r'C:\Users\Dick\Desktop\Documents\Notes\College Notes.rtf'
>>
>> #take out drive first because ntpath.split end sentinel is predictable
>> #that way
>> drive,rest = ntpath.splitdrive(path)
>>
>> # This will store the path components
>> comps = []
>> comps.append(drive)
>>
>> while rest != '\\':
>> parts = ntpath.split(rest)
>> comps.insert(1,parts[1])
>> rest = parts[0]
>>
>>
>> print '/'.join(comps)
>>
>> I am not happy with the loop to collect the components. But I couldn't
>> find a single path function which splits a path into all the components
>> in one go.
>
> What happens if the path looks like
>
> r"C:relative\path\to\my\file.txt"
>
> or
>
> r"C:/mixed\slashes.txt"?
Not quite sure what the intent of your question is, but all the paths
I want to modify are full, with only back slashes.
Dick
More information about the Tutor
mailing list