Double backslash in filepaths ?

S

Stef Mientki

It looks like sometimes a single backslash is replaced by a double backslash,
but sometimes it's not ???
See the error message below,
the first backslash is somewhere (not explicitly in my code) replaced,
but the second is not ???
Is it in general better to use double backslash in filepaths ?

thanks,
Stef Mientki

Traceback (most recent call last):
File "<string>", line 21, in ?
File "D:\data_to_test\Signal_WorkBench.py", line 118, in Write_Signal_File_Ext
DataFile.Write_Data (Data)
File "D:\data_to_test\Signal_WorkBench.py", line 95, in Write_Data
self.Write_Header(Nchan)
File "D:\data_to_test\Signal_WorkBench.py", line 83, in Write_Header
self.datafile = open(self.filename,'wb')
IOError: [Errno 2] No such file or directory: 'D:\\data_to_test\test_global.pd'
 
M

Michael Bentley

It looks like sometimes a single backslash is replaced by a double
backslash,
but sometimes it's not ???
See the error message below,
the first backslash is somewhere (not explicitly in my code) replaced,
but the second is not ???
Is it in general better to use double backslash in filepaths ?

thanks,
Stef Mientki

Traceback (most recent call last):
File "<string>", line 21, in ?
File "D:\data_to_test\Signal_WorkBench.py", line 118, in
Write_Signal_File_Ext
DataFile.Write_Data (Data)
File "D:\data_to_test\Signal_WorkBench.py", line 95, in
Write_Data
self.Write_Header(Nchan)
File "D:\data_to_test\Signal_WorkBench.py", line 83, in
Write_Header
self.datafile = open(self.filename,'wb')
IOError: [Errno 2] No such file or directory: 'D:\\data_to_test
\test_global.pd'

If I remember correctly, you don't really have to use backslashes at
all. I think that's just a holdover from when DOS filesystems first
became hierarchical -- and they had already used the sensible
directory delimiter '/' as a command line switch character. So I
think you can just substitute forward slashes and forget that double-
backslash madness.

But that's not really answering your question, is it?

What you're looking for is called 'escape characters'. The single
backslash combines with the 't' to become a TAB character. The
double backslashes combine to become '\'. So:
D:\data_to_test est_global.pd

hth,
Michael
 
J

John J. Lee

Stef Mientki said:
It looks like sometimes a single backslash is replaced by a double backslash,
but sometimes it's not ???
See the error message below,
the first backslash is somewhere (not explicitly in my code) replaced,
but the second is not ???
Is it in general better to use double backslash in filepaths ? [...]
IOError: [Errno 2] No such file or directory: 'D:\\data_to_test\test_global.pd'

'\t' is the tab character. '\d' is not a valid escape sequence, so
the backslash there survives intact. repr() normalises the string on
output, so the (single!) backslash in '\d' is displayed, as always in
the repr of strings, as '\\'.

You should either use this:

'D:\\data_to_test\\test_global.pd'


Or this:

r'D:\data_to_test\test_global.pd'

See also:

http://www.python.org/doc/faq/general/#why-can-t-raw-strings-r-strings-end-with-a-backslash


Or even this, which will work unless you're using crufty software that
doesn't like slash path separators (cmd.exe being one of those pieces
of software):

'D:/data_to_test/test_global.pd'


John
 
S

Stef Mientki

John said:
Stef Mientki said:
It looks like sometimes a single backslash is replaced by a double backslash,
but sometimes it's not ???
See the error message below,
the first backslash is somewhere (not explicitly in my code) replaced,
but the second is not ???
Is it in general better to use double backslash in filepaths ? [...]
IOError: [Errno 2] No such file or directory: 'D:\\data_to_test\test_global.pd'

'\t' is the tab character. '\d' is not a valid escape sequence, so
the backslash there survives intact. repr() normalises the string on
output, so the (single!) backslash in '\d' is displayed, as always in
the repr of strings, as '\\'.

You should either use this:

'D:\\data_to_test\\test_global.pd'


Or this:

r'D:\data_to_test\test_global.pd'

See also:

http://www.python.org/doc/faq/general/#why-can-t-raw-strings-r-strings-end-with-a-backslash


Or even this, which will work unless you're using crufty software that
doesn't like slash path separators (cmd.exe being one of those pieces
of software):

'D:/data_to_test/test_global.pd'


John

thanks John and Michael,
this is a very helpful explanation.

cheers,
Stef
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,764
Messages
2,569,564
Members
45,040
Latest member
papereejit

Latest Threads

Top