簡體   English   中英

這是否總是需要在 python 中的路徑聲明之前使用 r

[英]Is this always necessary to use r before path declaration in python

我經常在 python 代碼中看到這樣的語法。

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

我想知道為什么我需要在路徑前給出 r,我相信它與路徑中的'\'有關,有沒有其他方法可以給出路徑而不是使用 r''

字符串文字前的'r'使Python將其解析為“原始”字符串,而不進行轉義。
如果不想在字符串文字前使用'r',而是使用單斜杠指定路徑,則可以使用以下表示法:

"C:/Users/test/Desktop"

就像在Unix粘貼系統中一樣。 Windows理解文件路徑中的“ \\”和“ /”,因此,使用“ /”可以避免在路徑字符串之前使用“ r”字母。

另外,正如前面提到的,您可以用雙斜杠指定路徑,但是,正如我意識到的那樣,這不是您想要的:

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

確保反斜杠不會轉義字符。 一樣

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

僅當它具有轉義序列時

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

最好將其作為原始類型使用,以避免出現小故障或使用正斜杠。

您也可以在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'

根據知識,您可以使用正斜杠而不是反斜杠並將r放在上面。 如果您使用反斜杠,則必須在其前面加上r ,或者如果您願意,可以使用正斜杠。

示例 -> 您可以在 Jupyter notebook 中嘗試這個:

f = open(r'F:\love.txt', 'r') 

或者

f = open('F:/love.txt', 'r')

兩者都可以正常工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM