3种方法转义字符解决报错FileNotFoundError: [Errno 2] No such file or directory

源代码:

with open ("pi_digits.txt","r") as file_object:#注意是C:\\文件夹1\\文件夹2,不是C:\,一定要记住!!!
    contents = file_object.read()
    print(contents)

#>>>
FileNotFoundError: [Errno 2] No such file or directory: 'pi_digits.txt'

由No such file or directory分析,文件是有的,那就是路径。
该怎么修改?如下:
3种方法转义字符解决报错FileNotFoundError: [Errno 2] No such file or directory_第1张图片
3种方法转义字符解决报错FileNotFoundError: [Errno 2] No such file or directory_第2张图片
因此完整路径是:
C:\Users\YJG\Desktop\pi_digits.txt
多说一句:要找到你的文件地址,只需要把你要打开的文件直接拖到编辑器终端的窗口里,就会显示出文件地址,然后复制一下就好。(这个操作秀)
于是修改代码:

with open ("C:\Users\YJG\Desktop\pi_digits.txt","r") as file_object:#注意是C:\\文件夹1\\文件夹2,不是C:\,一定要记住!!!
    contents = file_object.read()
    print(contents)

还是报错:报错原因是路径,且往下文看。
在这里插入图片描述
由C语言的学习经验,将路径修改如下:

C:\\Users\\YJG\\Desktop\\pi_digits.txt

对比
C:\Users\YJG\Desktop\pi_digits.txt
多了一个\。
再看结果,报错我打嘴:

with open ("C:\\Users\\YJG\\Desktop\\pi_digits.txt","r") as file_object:#注意是C:\\文件夹1\\文件夹2,不是C:\,一定要记住!!!
    contents = file_object.read()
    print(contents)

3种方法转义字符解决报错FileNotFoundError: [Errno 2] No such file or directory_第3张图片
为什么加了一个斜杠\就解决报错了?答案先不说,请先思考3秒:
3。。。。2。。。。。1
答案超级简单:转义字符啊。
正确路径是:
C:\Users\YJG\Desktop\pi_digits.txt
用字符串表示,注意一个细节是:"\\"------>\
此时,你是不是马上恍然大悟。赶紧关注我,为思考点赞!
所以,用字符串表示C:\Users\YJG\Desktop\pi_digits.txt是
“C:\\Users\YJG\Desktop\pi_digits.txt”
最后结果成功出现也验证了这个原理。

多说一点:敲黑板!!!总结!!!

因为单独一个"\",在Python中带有转义字符的意思。如:’\t’就代表按下一个tab键,"\\"就表示\,"\b"表示退格。
在Windows操作系统中,路径分隔符有两种:一种用\\,另一种是用/,你也可以只用一个/来分隔路径。

来一起看一下效果:

with open ("C:/Users/YJG/Desktop/pi_digits.txt","r") as file_object:#注意是C:\\文件夹1\\文件夹2,不是C:\,也可以用/。
    contents = file_object.read()
    print(contents)

3种方法转义字符解决报错FileNotFoundError: [Errno 2] No such file or directory_第4张图片
还可以加个 r ,如下:

with open (r"C:\Users\YJG\Desktop\pi_digits.txt") as file_object:#加个r
    contents = file_object.read()
    print(contents.strip())

3种方法转义字符解决报错FileNotFoundError: [Errno 2] No such file or directory_第5张图片
小结:
在Windows操作系统中,路径分隔符有两种:一种用\\,另一种是用/。
但是呢,别忘了\在Python中是转义字符,所以时常会有冲突。为了避坑,Windows的绝对路径通常要稍作处理,写成以下三种格式;

格式1:常用,尤其是做项目的时候。推荐使用。
with open (r"C:\Users\YJG\Desktop\pi_digits.txt") as file_object:
    contents = file_object.read()
    print(contents.strip())
格式2with open ("C:\\Users\\YJG\\Desktop\\pi_digits.txt") as file_object:
    contents = file_object.read()
    print(contents.strip())
    
格式3with open ("C:/Users/YJG/Desktop/pi_digits.txt") as file_object:
    contents = file_object.read()
    print(contents.strip())

你是否掌握了呢?为思考点赞!

你可能感兴趣的:(#,python深度理解笔记)