zl程序教程

您现在的位置是:首页 >  Python

当前栏目

【Python】路径报错Invalid argument,歪?!明明没有错为什么说我错?

2023-04-18 13:10:06 时间

OS打开文件代码如下,反复确认过路径是无误的,但是运行依然提供报错

Path=os.path.abspath("D:71address")
out_path=os.path.join(Path,"out_data")
Data=pd.read_stata(os.path.join(out_data,"address.dta"))

报错内容如下

[Errno 22] Invalid argument:'d:\0701address\x07x01x07ddress\out_data\address.dta

反馈过来的路径是一堆莫名其妙的组合,电脑一会儿一会儿的宛如智障。(电脑说:你才是

真正问题出在路径中的分隔符,用的“”被默认为转义符而非分隔符

一般情况下,常用路径分隔符有“/”,""和“\”。

MAC和Linux仅识别“/”作为路径分隔符,所以用反斜杠“”会被报错。Windows复制粘贴的系统路径默认用的是反斜杠“”,但同时兼容斜杠,也就是说斜杠“/”跟反斜杠“”都可以使用。

但也因此产生了上面描述的问题,因为反斜杠“”同时还被默认作为转义符进行使用。用于转义一些被赋予特殊意义的符号,比如双引号“ ”,一般被作为一段文本输入开始与结束的符号,如果想直接print出来而一对双引号,需要在前面加上反斜杠,如下

print "这是一个引用"

输出结果如下

“这是一个引用”

这个规则在MarkDown上也同样适用。

那如何将转义特殊符号的“”进行转义呢?再加一个反斜杠,转义转义符,负负得正。

print \"这是一个引用\"

“这是一个引用”

这里第一个反斜杠是作为转义符来使用,所以只会显示第二个反斜杠。⤴️

所以最开始代码报错中用的反斜杠““被默认视为了转义符号,才会出现上图中报错的"x07x01xxxxxx”。此时将反斜杠,直接改写成“/”或者“”即可。

这个问题只会在windosw系统当中出现,在平时使用中我们养成习惯直接用“/”即可以避免这个问题。