錯誤原因是,字符串以 \ 結尾 或者字符串缺少引號。
寫代碼拼接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演示
參考資料: