包含 Windows 路径的原始字符串会产生“SyntaxError:未终止的字符串文字”[重复]

问题描述 投票:0回答:4

我正在尝试使用我找到的shutil脚本,但运行它会触发:

SyntaxError: unterminated string literal (detected at line 4)

这可能与包含原始 Windows 路径的脚本有关。如何修复脚本?

import shutil
import os

source = r"C:\Users\[username]\Downloads\"
dest1 = r" C:\Users\[username]\Desktop\Reports\14"
dest2 = r" C:\Users\[username]\Desktop\Reports\52"
dest3 = r" C:\Users\[username]\Desktop\Reports\59"

files = os.listdir(source)

for f in files:
   
 if (f.startswith("Log 14")):
        shutil.move(f, dest1)
    elif (f.startswith("Log 54")):
        shutil.move(f, dest2)
python syntax syntax-error string-literals rawstring
4个回答
5
投票

你有智能报价而不是普通报价。缩进也不正确。

这是固定代码:

import shutil
import os

source = "C:\\Users\\[username]\\Downloads\\"
dest1 = "C:\\Users\\[username]\\Desktop\\Reports\\14"
dest2 = "C:\\Users\\[username]\\Desktop\\Reports\\52"
dest3 = "C:\\Users\\[username]\\Desktop\\Reports\\59"

files = os.listdir(source)

for f in files:
    if f.startswith("Log 14"):
        shutil.move(source + f, dest1)
    elif f.startswith("Log 54"):
        shutil.move(source + f, dest2)

3
投票

留意智能报价

。它们需要用双引号
"
.


1
投票
import os

if os.name == 'nt':    #check if windows 
  a='\\'
else:
  a='/'


source = "C:"+a+"Users"+a+"[username]"+a+"Downloads"+a

0
投票

智能引号再次来袭。

使用 BabelStone,可以确定代码中每个字符的 unicode 标识。

您习惯的开始/结束引号是

\U0022
。但是,
dest2
上的 URL 末尾以不同的字符结尾,即
\U201D
。这是一个不同的角色。解决此问题的最简单方法是在 IDE 中重新输入引号。

输入:

"”

U+0022 : QUOTATION MARK {double quote}
U+201D : RIGHT DOUBLE QUOTATION MARK {double comma quotation mark}
© www.soinside.com 2019 - 2024. All rights reserved.