Windows path in Python
Windows path in Python
you can use always:
C:/mydir
this works both in linux and windows.
Other posibility is
C:\mydir
if you have problems with some names you can also try raw string literals:
rC:mydir
however best practice is to use the os.path
module functions that always select the correct configuration for your OS:
os.path.join(mydir, myfile)
From python 3.4 you can also use the pathlib module. This is equivelent to the above:
pathlib.Path(mydir, myfile)
or
pathlib.Path(mydir) / myfile
Use the os.path
module.
os.path.join( C:, meshes, as )
Or use raw strings
rC:meshesas
I would also recommend no spaces in the path or file names. And you could use double backslashes in your strings.
C:\meshes\as.jpg
Windows path in Python
Yes, in Python string literals denotes the start of an escape sequence. In your path you have a valid two-character escape sequence
a
, which is collapsed into one character that is ASCII Bell:
>>> a
x07
>>> len(a)
1
>>> C:meshesas
C:\meshesx07s
>>> print(C:meshesas)
C:meshess
Other common escape sequences include t
(tab), n
(line feed), r
(carriage return):
>>> list(C:test)
[C, :, t, e, s, t]
>>> list(C:nest)
[C, :, n, e, s, t]
>>> list(C:rest)
[C, :, r, e, s, t]
As you can see, in all these examples the backslash and the next character in the literal were grouped together to form a single character in the final string. The full list of Pythons escape sequences is here.
There are a variety of ways to deal with that:
-
Python will not process escape sequences in string literals prefixed with
r
orR
:>>> rC:meshesas C:\meshes\as >>> print(rC:meshesas) C:meshesas
-
Python on Windows should handle forward slashes, too.
-
You could use
os.path.join
…>>> import os >>> os.path.join(C:, os.sep, meshes, as) C:\meshes\as
-
… or the newer
pathlib
module>>> from pathlib import Path >>> Path(C:, /, meshes, as) WindowsPath(C:/meshes/as)