前言

可恶,QEXO 没自动保存,本身前言都写完了,结果一个字都没了()


事情的起因是这样的

我的朋友写了个程序,我要做的就是在 Python 终端中切到这个包含这个 Python 程序的目录中再 import

说人话就是先 os.chdir(path)import(file)

1
2
3
import(os)
os.chdir(path)
import(file)

我按照上面的步骤操作,但遇到了一点问题

1
2
3
4
5
>>> os.chdir("C:\Users\惟灿 Can1425\DownLoads\mPython-Flag-OS-ALpha (1)\mPython-Flag-OS-Alpha\tools")
File "<stdin>", line 1
os.chdir("C:\Users\惟灿 Can1425\DownLoads\mPython-FLag-0S-Alpha (1)\mPython-Flag-OS-Alpha\tools")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape

本身 Python 还没学完,再加上好久没怎么玩了,我跟个煞笔一样把这东西发给了群友

啊哈哈哈🌿

行吧,那我们来说说这个 Python 中的转义字符

细讲“转义字符”

概念

Python 中有些符号具有特殊的含义,比如''""用来表示一个字符串等等,以及一些不好表达的内容,如换行符,制表符

为了在字符串中输入这些特殊字符,便有了转义字符。转义字符是 Python 中具有特殊含义的字符,以 \ 开头

实例

新建一个demo_string_escape_error.py文件,写入如下内容

1
txt = "We are the so-called "Vikings" from the north."

运行给出的报错如下

1
2
3
4
  File "demo_string_escape_error.py", line 1
txt = "We are the so-called "Vikings" from the north."
^
SyntaxError: invalid syntax

转义字符\"就该上场了

修改demo_string_escape_error.py的代码为

1
txt = "We are the so-called \"Vikings\" from the north."

再运行,可以看到并没有报错出现

意义

经过上述操作,转义字符的意义已经很明确了,无疑就是帮助你在字符串中插入非法字符

回到问题

回到最初的问题,我们先来看看我是怎么用os.chdir(path)命令的

1
os.chdir("C:\Users\惟灿 Can1425\DownLoads\mPython-FLag-0S-Alpha (1)\mPython-Flag-OS-Alpha\tools")

好像没什么问题,但让我们来看看 Python 的非法字符有哪些

非法字符

  • 数字:在标识符的开头不能是数字;
  • 空格:不能包含空格;
  • 标点符号:不能包含标点符号,如@、$、%、#、!等;
  • 运算符:不能包含运算符,如+、-、*、/等;
  • 分隔符:不能包含不允许的分隔符,如:、;、.、,、(、)、[、]、{、}等;
  • 引号:不能包含引号,如单引号’、双引号”等;
  • 特殊字符:不能包含特殊字符,如换行符、制表符等。

ok,注意看第四条,我们的目录路径中有/很显然,这是非法字符,报错也就理所当然了

解决问题

根据实例,举一反三。将目录中的/换成相对应的转义字符//即可

附录

转义字符 含义
\‘ 代表一个单引号
\“ 代表一个双引号
\\ 代表一个反斜杠
\n 换行
\r 返回光标至首行
\f 换页
\v 垂直制表符
\t 水平制表符
\b 删除一个字符再打印,相当于 Backspace 按键
\0 空字符 Null
\0oo 三位的八进制数表示的字符
\xXX 两位的十六进制数表示的字符