How to get rid of double backslash in python windows file path string?
The double backslash is not wrong, python represents it way that to the user. In each double backslash \\
, the first one escapes the second to imply an actual backslash. If a = r'raw s\tring'
and b = 'raw s\\tring'
(no 'r' and explicit double slash) then they are both represented as 'raw s\\tring'
.
>>> a = r'raw s\tring'
>>> b = 'raw s\\tring'
>>> a
'raw s\\tring'
>>> b
'raw s\\tring'
For clarification, when you print the string, you'd see it as it would get used, like in a path - with just one backslash:
>>> print(a)
raw s\tring
>>> print(b)
raw s\tring
And in this printed string case, the \t
doesn't imply a tab, it's a backslash \
followed by the letter 't'.
Otherwise, a string with no 'r' prefix and a single backslash would escape the character after it, making it evaluate the 't' following it == tab:
>>> t = 'not raw s\tring' # here '\t' = tab
>>> t
'not raw s\tring'
>>> print(t) # will print a tab (and no letter 't' in 's\tring')
not raw s ring
So in the PDF path+name:
>>> item = 'xyz'
>>> PDF = r'C:\Users\user\Desktop\File_%s.pdf' % item
>>> PDF # the representation of the string, also in error messages
'C:\\Users\\user\\Desktop\\File_xyz.pdf'
>>> print(PDF) # "as used"
C:\Users\user\Desktop\File_xyz.pdf
More info about escape sequences in the table here. Also see __str__
vs __repr__
.
Error with double backslash in Windows path in Python
If you are using a raw-string, then you do not escape backslashes:
f(r'E:\dir')
Of course, this problem (and many others like it) can be solved by simply using forwardslashes in paths:
f('E:/dir')
python replace single backslash with double backslash
No need to use str.replace
or string.replace
here, just convert that string to a raw string:
>>> strs = r"C:\Users\Josh\Desktop\20130216"
^
|
notice the 'r'
Below is the repr
version of the above string, that's why you're seeing \\
here.
But, in fact the actual string contains just '\'
not \\
.
>>> strs
'C:\\Users\\Josh\\Desktop\\20130216'
>>> s = r"f\o"
>>> s #repr representation
'f\\o'
>>> len(s) #length is 3, as there's only one `'\'`
3
But when you're going to print this string you'll not get '\\'
in the output.
>>> print strs
C:\Users\Josh\Desktop\20130216
If you want the string to show '\\'
during print
then use str.replace
:
>>> new_strs = strs.replace('\\','\\\\')
>>> print new_strs
C:\\Users\\Josh\\Desktop\\20130216
repr
version will now show \\\\
:
>>> new_strs
'C:\\\\Users\\\\Josh\\\\Desktop\\\\20130216'
Replace two backslashes with a single backslash
Your output doesn't have double backslashes. What you are looking at is the repr()
value of the string and that displays with escaped backslashes. Assuming your temp_folder
would have double backslashes, you should instead use:
print(temp_folder.replace('\\\\', '\\'))
and that will show you:
C:\Users\User\AppData\Local\Temp
which also drops the quotes.
But your temp_folder
is unlikely to have double backslashes and this difference in display probably got you thinking that there are double backslashes in the return value from tempfile.gettempdir()
. As @Jean-Francois indicated, there should not be (at least not on Windows). So you don't need to use the .replace()
, just print:
print(temp_folder)
Avoid double backslash in windows path
As is stated in the comments, you should be iterating through the files in the directory, not through the string resulting from os.path.join()
. So instead, iterate through the list of files in your classifiers_path
directory resulting from passing it to os.listdir()
like this:
for i in os.listdir(os.path.join(classifiers_path)):
if i.endswith('.pkl'):
model = joblib.load(i)
Related Topics
Naturally Sorting Pandas Dataframe
Date Ticks and Rotation in Matplotlib
Absolute VS. Explicit Relative Import of Python Module
Why Do I Get Typeerror: Can't Multiply Sequence by Non-Int of Type 'Float'
How to Remove/Delete a Folder That Is Not Empty
Python Script to Copy Text to Clipboard
How to Stop Flask Application Without Using Ctrl-C
Does Python Have a Bitfield Type
Numpy Random Choice to Produce a 2D-Array with All Unique Values
Pyinstaller and --Onefile: How to Include an Image in the Exe File
How to Make Image/Images Disappear in Pygame
How to Read and Write Ini File with Python3
How to Change Values in a Tuple
Keyerror: 'Tcl_Library' When I Use Cx_Freeze