在python中路径声明之前使用r总是必要的

时间:2017-10-30 08:06:04

标签: python path

我经常在python代码中看到这样的语法。

    import os
    os.chdir(r'C:\Users\test\Desktop')

我想知道为什么我需要在路径前给r,我相信它与路径中的'\'有关,有没有其他方法可以给路径而不是使用r''

4 个答案:

答案 0 :(得分:1)

在字符串文字之前的

'r'使Python将其解析为“原始”字符串,而不进行转义 如果你不想在字符串文字之前使用'r',但是用单斜杠指定路径,你可以使用这种表示法:

"C:/Users/test/Desktop"

与unix-pased系统一样。 Windows在文件路径中理解“\”和“/”,因此,使用“/”可以避免在路径字符串之前删除“r”字母。

另外,如上所述,您可以使用双斜线指定路径,但是,正如我意识到的那样,这不是您想要的:

"C:\\Users\\test\\Desktop"

答案 1 :(得分:0)

确保反斜杠不会转义字符。它与

相同
os.chdir('C:\\Users\\test\\Desktop')

答案 2 :(得分:0)

仅当它具有转义序列时

print('C:\sys\cat\Desktop')

更好将其设为原始类型以避免毛刺或使用正斜杠。

答案 3 :(得分:0)

您也可以在Windows中使用正斜杠,因此您不需要原始字符串文字:

>>> import os
>>> os.stat(r'C:\Users\f3k\Desktop\excel.vbs')
nt.stat_result(st_mode=33206, st_ino=0L, st_dev=0, st_nlink=0, st_uid=0, st_gid=0, st_size=555L, st_atime=1367585162L, st_mtime=1367586148L, st_ctime=1367585162L)

使用正斜杠相同:

>>> os.stat('C:/Users/f3k/Desktop/excel.vbs')
nt.stat_result(st_mode=33206, st_ino=0L, st_dev=0, st_nlink=0, st_uid=0, st_gid=0, st_size=555L, st_atime=1367585162L, st_mtime=1367586148L, st_ctime=1367585162L)

但请注意使用os.path.join():

>>> os.path.join('C:/Users/f3k/Desktop', 'excel.vbs')
'C:/Users/f3k/Desktop\\excel.vbs'