Doubled backslashes in Windows paths

BartC bc at freeuk.com
Fri Oct 7 08:39:39 EDT 2016


On 07/10/2016 06:30, Oz-in-DFW wrote:
> I'm using Python 3.5.2 (v3.5.2:4def2a2901a5, Jun 25 2016, 22:01:18) [MSC
> v.1900 32 bit (Intel)] on Windows 7
>
> I'm trying to write some file processing that looks at file size,
> extensions, and several other things and I'm having trouble getting a
> reliably usable path to files.
>
> The problem *seems* to be doubled backslashes in the path, but I've read
> elsewhere that this is just an artifact of the way the interpreter
> displays the strings.
>
> I'm getting an error message on an os.path.getsize call;
>
>     Path: -
>     "C:\Users\Rich\Desktop\2B_Proc\2307e60da6451986dd8d23635b845386.jpg" -
>     Traceback (most recent call last):
>       File "C:\Users\Rich\workspace\PyTest\test.py", line 19, in <module>
>         if os.path.getsize(path)>10000:
>       File "C:\Python32\lib\genericpath.py", line 49, in getsize
>         return os.stat(filename).st_size
>     WindowsError: [Error 123] The filename, directory name, or volume
>     label syntax is incorrect:
>     '"C:\\Users\\Rich\\Desktop\\2B_Proc\\2307e60da6451986dd8d23635b845386.jpg"'

I tried to recreate this error and it seems the getsize function doesn't 
like quotes in the path.

Whether \ is correctly written as \\ in a string literal, or a raw 
string is used with the r prefix and a single \, or a \ has been put 
into path by any other means, then these will still be displayed as \\ 
in the error message, which is strange. The error handler is expanding \ 
characters to \\.

But the main error appears to be due to the presence of quotes, whether 
at each end, or inside the path, enclosing an element with spaces for 
example. Try using len(path)>10000 instead; it might be near enough (the 
10000 sounds arbitrary anyway).

-- 
Bartc



More information about the Python-list mailing list