Construct raw strings?

T

Thomas W

I got a stupid problem; on my WinXP-box I want to scan the filesystem
and enter a path to scan like this :

path_to_scan = 'd:\test_images'

This is used in a larger context and joined like

real_path_after_scanning = os.path.join(path_to_scan, somepart, 'foo',
'bar', filename)

Using os.path.exists(real_path_after_scanning) returns false. The
problem is that some of the parts being joined contains escape
characters, like \. If I take the seperate parts and join them using
the interpreter, like :
it works ok and os.path.exists(f) returns True, but I cannot the that
r' in front using the os.path.join-method in my code.

I don't know if this makes any sense at all, but I'm lost. Damn those
stupid windows-paths !!

Thanks in advance,
Thomas
 
B

Benji York

Thomas said:
I got a stupid problem; on my WinXP-box I want to scan the filesystem
and enter a path to scan like this :

path_to_scan = 'd:\test_images'

Note the lack of an "r" prefix and the \t sequence above.
The problem is that some of the parts being joined contains escape
characters
If I take the seperate parts and join them using the interpreter,
like :


it works ok and os.path.exists(f) returns True, but I cannot the that
r' in front using the os.path.join-method in my code.

It's not join that's getting you, it's the non-raw string representation
in path_to_scan. Use either 'd:\test_images' or 'd:\\test_images' instead.
 
R

Robert Kern

Thomas said:
I got a stupid problem; on my WinXP-box I want to scan the filesystem
and enter a path to scan like this :

path_to_scan = 'd:\test_images'

path_to_scan = r'd:\test_images'
This is used in a larger context and joined like

real_path_after_scanning = os.path.join(path_to_scan, somepart, 'foo',
'bar', filename)

Using os.path.exists(real_path_after_scanning) returns false. The
problem is that some of the parts being joined contains escape
characters, like \. If I take the seperate parts and join them using
the interpreter, like :


it works ok and os.path.exists(f) returns True, but I cannot the that
r' in front using the os.path.join-method in my code.

There is no such thing as a "raw string." There are "raw string
literals" which, when evaluated as Python source, are interpreted with
slightly different rules than regular "string literals." After the
literal has been interpreted to yield a string object, there is no
difference between the two; they're both just string objects.

If you can, please post a small but complete example script that causes
errors (and the actual output of the error itself).

--
Robert Kern
(e-mail address removed)

"In the fields of hell where the grass grows high
Are the graves of dreams allowed to die."
-- Richard Harter
 
P

Peter Hansen

Benji said:
It's not join that's getting you, it's the non-raw string representation
in path_to_scan. Use either 'd:\test_images' or 'd:\\test_images' instead.

Benji, you're confusing things: you probably meant r'd:\test_images' in
the above, but in any case I think Robert Kern's on the right track
checking whether this is really about string literals...

-Peter
 
T

Terry Reedy

Thomas W said:
I got a stupid problem; on my WinXP-box I want to scan the filesystem
and enter a path to scan like this :

path_to_scan = 'd:\test_images'

I believe you can always use / instead of \ for Win filenames from Python.
Avoids the \ problem. I think only the shell that uses / for options has a
problem with / in filenames, but Python calls directly to C.

Terry J. Reedy
 

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

Staff online

Members online

Forum statistics

Threads
474,264
Messages
2,571,315
Members
48,000
Latest member
SusannahSt

Latest Threads

Top