You need to enable JavaScript to run this app. 为何Python使用shutil.copyfile复制文件至H盘时r'H:\'路径触发SyntaxError报错?
优惠活动
大模型
产品
解决方案
定价
更多

为何Python使用shutil.copyfile复制文件至H盘时r'H:\'路径触发SyntaxError报错?

报错原因

Python中带r前缀的原始字符串,不允许以单个反斜杠作为结尾。
解析代码时Python会先做语法层级的字符串闭合校验:你写的r'H:\'里,末尾的反斜杠会把紧跟其后的单引号转义,让解析器认为这个字符串还没闭合,直到读完一整行都找不到匹配的结束引号,自然就抛出SyntaxError: EOL while scanning string literal。
另外额外提一个容易踩的运行时坑:shutil.copyfile()要求两个入参都是完整的文件全路径,不能只传目录路径。就算你修好了当前的语法报错,只写H:\当target,后续运行也会报“目标是目录而非文件”的错误。

可落地的解决方式
  • 最直接的方案:写全目标文件的完整路径,不让路径值以反斜杠结尾。你的需求是把filetocopy.xlsx复制到H盘根目录,直接把target定义为r'H:\filetocopy.xlsx'就可以,此时路径末尾是文件名,完全不会触发原始字符串的语法限制。
  • 如果确实需要表示带结尾反斜杠的目录路径,不要把最后一个反斜杠包在r字符串里,用字符串拼接实现即可:比如H盘根目录路径可以写为r'H:' + '\\',从语法上绕开r字符串不支持结尾反斜杠的限制。
  • 从根源减少路径写法错误:用Python内置的os.path.join方法拼接路径,模块会自动适配当前系统的路径分隔符,不需要手动记Windows下反斜杠的转义规则。
修正后可正常运行的代码
import shutil
import os

original = r'H:\Bulk upload\filetocopy.xlsx'
# 自动拼接生成H盘根目录下的目标文件全路径
target = os.path.join('H:\\', 'filetocopy.xlsx')
shutil.copyfile(original, target)

内容的提问来源于stack exchange,提问作者rbose

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.13 09:36:04