python SyntaxError: EOL while scanning string literal

錯誤原因是,字符串以 \ 結尾 或者字符串缺少引號。

寫代碼拼接windows 路徑出現這個錯誤, 查資料才知道 python中字符串不能以 \ 結尾

我的代碼如下

import os
dirname = "test"

path = r'C:\Users\panda\Desktop\新建文件夾\' + dirname

 

運行則報錯

File "test.py", line 3
    path = r'C:\Users\panda\Desktop\新建文件夾\' + dirname
                                                    ^
SyntaxError: EOL while scanning string literal

 

那麼如何解決呢

方法一 : 使用 os.path.join

path = os.path.join(r'C:\Users\panda\Desktop\新建文件夾', dirname)

 

方法二:路徑的反斜槓使用轉義 而不用 r

path = 'C:\\Users\\panda\\Desktop\\新建文件夾\\' + dirname

 

方法三:格式化字符串

dirname="test"
path = r'C:\Users\panda\Desktop\新建文件夾\%s' % (dirname)  # 第一種格式化方法
#從 python 2.6 開始
path = r'C:\Users\panda\Desktop\新建文件夾\{}'.format(dirname) # 第二種格式化方法

 

方法四: string interpolation (字符串內插)

從python 3.6 開始 支持string interpolation

# python 3.6 開始 支持string interpolation
dirname = "test"
path3 = rf'C:\Users\panda\Desktop\新建文件夾\{dirname}' 

參考: https://docs.python.org/3/whatsnew/3.6.html#whatsnew36-pep498 

 

爲何 字符串不能 以 \ (反斜槓) 結束呢

因爲 反斜槓有別的用處。 python中一個完整的字符串太長的時候,一行寫不下想換行,但又要維持它是一個字符串的時候 可以用 反斜槓來換行,所以反斜槓後面不能立即接上字符串結束的引號。 

下面用 REPL演示

 

 

參考資料:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章