135

I want to understand why do we use a r before a path name in python such as

dirname = r'C:\temp\parts'
recursive
  • 83,943
  • 34
  • 151
  • 241
Rahul
  • 1,569
  • 4
  • 16
  • 17

1 Answers1

178

r means the string will be treated as raw string.

See the official Python 2 Reference about "String literals":

When an 'r' or 'R' prefix is present, a character following a backslash is included in the string without change, and all backslashes are left in the string. For example, the string literal r"\n" consists of two characters: a backslash and a lowercase 'n'. String quotes can be escaped with a backslash, but the backslash remains in the string; for example, r"\"" is a valid string literal consisting of two characters: a backslash and a double quote; r"\" is not a valid string literal (even a raw string cannot end in an odd number of backslashes). Specifically, a raw string cannot end in a single backslash (since the backslash would escape the following quote character). Note also that a single backslash followed by a newline is interpreted as those two characters as part of the string, not as a line continuation.

Wevah
  • 28,182
  • 7
  • 83
  • 72
Rahul Tripathi
  • 168,305
  • 31
  • 280
  • 331
  • 2
    has this anything to do with regex? – Abdel Nov 08 '21 at 16:26
  • 6
    @Abdel No the `r` references *raw*, not *regex* – Salem Nov 24 '21 at 09:07
  • 4
    @Abdel & @Salem However `r`-prefixed raw strings are preferred for regex patterns because then one does not need to double-escape backslashes, e.g. `r'\d+'` is equivalent to `'\\d+'`, but more similar to the raw regex pattern they both contain: `\d+`. – Walf Oct 24 '22 at 03:23