• Python 绝对路径与相对路径


    文件的读写操作

    1.Python 绝对路径与相对路径

    1.1 准备工作

    第1步:对照下图,新建文件和文件夹:

    1_file

    (1) 在桌面新建文件夹,命名为file。
    (2) 在file文件夹中新建2个文件夹,分别命名为a_file, b_file。
    (3)在file文件夹中新建1个txt文件,命名为xxx.txt,在xxx.txt 文件中写入“好好学习,天天向上!!!”。
    (4)在a_file文件夹中新建1个txt文件,命名为aaa.txt,在aaa.txt 文件中写入“恭喜你,文件读取成功!!!”。
    (5)在b_file文件夹中新建c_file文件夹,在c_file文件夹新建一个ccc.txt文档,在文档中写入“今天星期六!!!”。
    (6)在b_file文件夹中新建1个txt文件,命名为bbb.txt,在bbb.txt 文件中写入“今天下雨了!!!”。
    (7)在b_file文件夹中新建1个b.py文件。

    第2步:用vscode打开b_file文件夹

    注意用相对路径只能打开b_file文件夹,否则后面的代码会报错!!!
    但是用绝对路径打开文件时,可以不限制打开的文件夹。

    1.2 绝对路径

    1.什么是绝对路径

    在Python读取文件时,我们首先需要知道文件的路径,即存储位置。
    就像人工手动打开文件一样,首先你要知道文件存储在c盘或d盘的具体位置。

    Python的文档路径有两种表述方式:
    第1种是绝对路径:就是从盘符(c盘、d盘)开始一直到文件所在的具体位置。
    绝对路径就是文件或文件夹在硬盘上的完整路径。
    在 Windows 系统中,绝对路径是以磁盘名称开头,如 C: 或者 D: ,具体的文件或文件夹名称做结尾。
    例如:xxx.txt 文件的绝对路径为:
    "C:\Users\xiaoyuzhou\Desktop\file\xxx.txt" 
    绝对路径是唯一的,只有一个。

    2.查看绝对路径的方法有2种

    方法1:点击文件上方的搜索栏;

    2_点击搜索栏

    方法2:鼠标点击文件xxx.txt,然后按住【shift】,再点击鼠标右键,最后点击【复制文件地址】。

    3_复制文件地址

    3.用绝对路径打开文件
    首先打开b.py 文件,在b.py 文件中输入下面的代码。
    用绝对路径打开文件,可以不限制打开的文件夹。

    # 用绝对路径打开xxx.txt   
    txt = open (
    "C:\\Users\\xiaoyuzhou\\Desktop\\file\\xxx.txt", 
    encoding='utf-8') 
    print(txt.read())
     

    【终端输出】 好好学习,天天向上!!!

    因为图片显示不全,所以代码里我有换行,大家编写时候不用换行。

    4.代码解析
    open 是一个Python的内置函数,作用是打开文件,函数里面有2个参数;
    第1参数是文件的绝对路径:C:\Users\xiaoyuzhou\Desktop\file\xxx.txt";
    第2参数是文件编码格式:encoding='utf-8';

    read 也是一个Python的内置函数,作用是读取整个文件,并将读取到的文件内容存放到一个字符串变量中。
    open 函数后面会有详细的介绍,这里仅做了解。

    5.注意事项:改写绝对路径时加一个\

    xxx.txt 文件的的绝对路径原本为:
    "C:\Users\xiaoyuzhou\Desktop\file\xxx.txt"

    通过对比两个路径,发现我把绝对路径的单反斜杠统一写成了双反斜杠,然后放到参数中。
    为什么要写成双反斜杠呢?
    因为在Python中,有转义字符的语法,【\】+字母能实现特殊的功能。

    4_转义字符

    上述代码中,如果不加双反斜杠,\f 就会被ptyhon当做转义符号处理,程序会报错,如下面的代码:

    # 使用单反斜杠,\f 被当做转义字符,程序报错 
    txt = open (
         ,
        encoding=) 
    
     

    【程序报错】

    SyntaxError: (unicode error) 'unicodeescape' codec 
    can't decode bytes in position 2-3:
    truncated \UXXXXXXXX escape

    1.3 相对路径

    1. 什么是绝对路径
    “相对路径”就是针对“当前文件夹”这一参考对象,来描述文件路径的形式。
    相对路径使用..\\ .\\表示。
    一个点 表示文件或文件夹所在的当前目录。
    两个点..\\表示当前目录的上一级目录。
    上n级就用n 个表示。

    2. 任务1:在b.py里打开同一个文件夹里的文件:bbb.txt。

    首先用vscode 打开b_file文件夹。
    然后打开b.py文件。
    注意:用相对路径只能打开b_file文件夹,否则后面的代码会报错!!!

    人工操作:在b.py 文件下,要打开bbb.txt 文件:直接点击bbb.txt 文件即可。

    5_file

    大家观察上面的文件流程图,发现b.py 和bbb.txt 位置一样,即在同一文件夹里。
    绝对路径中一个点
    那么相对于b.py 而言,bbb.txt 的相对路径为:.\\bbb.txtbbb.txt
    因为可以省略不写。
    注意路径参数必须有后缀名.txt。

    2.1同文件夹绝对路径省略点:bbb.txt

    # 在b.py里打开同文件夹文件:bbb.txt
    txt = open ('bbb.txt',encoding=)

     

    【终端输出】

    今天下雨了!!!

    2.2同文件夹绝对路径不省略点:.\bbb.txt

     txt = open ('.\\bbb.txt',encoding=)
     

    3. 任务2:在b.py里打开下一层次的文件:ccc.txt

    6_下级file

    大家观察上面的文件流程图,发现ccc.txt在b.py 的下一级目录里。
    和b.py同级的是c_file 文件夹。
    那么相对于b.py 而言,ccc.txt 的相对路径为:.\\c_file\\ccc.txtc_file\\ccc.txt
    可以省略不写。

    人工操作:现在打开的是b.py 文件,在打开b.py文件下,要打开 ccc.txt,首先打开c_file,然后打开ccc.txt 文档即可。(大家按照人工打开的方式操作就能理解)

    省略.\

    # 在b.py里打开下一层次的文件:ccc.txt。
    txt = open ('c_file\\ccc.txt',encoding=)
    今天星期六!!!

    不省略.\

    txt = open ('.\\c_file\\ccc.txt',encoding=)

    4. 任务3:在b.py里打开上一层次的文件:aaa.txt

    7_上级file

    大家观察上面的文件流程图,发现aaa.txt在b.py 的上一级目录里。
    两个点
    那么相对于b.py 而言,aaa.txt 的相对路径为:..\\a_file\\aaa.txt
    人工操作:现在打开的是b.py 文件,文件所在的目录是b_file 文件夹,要打开aaa.txt,往回退一步,找到a_file 文件夹,在点击aaa.txt 即可。
    文件夹往上走(后退)一次,就用1个
    ..\不能省略。

    # 任务3:在b.py里打开上1级的文件:aaa.txt。  
    txt = open ('..\\a_file\\aaa.txt',encoding=)
    print(txt.read())  

     

    恭喜你,文件读取成功!!!

    4. 任务4:在b.py里打开上2个层次的文件:描述文档.txt

    准备工作:在电脑桌面新建一个名为【Python笔记新】文件夹,里面新建【第9章 文件读写】文件夹,里面新建【文件路径】文件夹,里面新建【相对路径】文件夹,里面新建【描述方式.txt】文档,文档中输入内容“文件夹往上走几层就用几个..\ 。”

    描述方式.txt 文档绝对路径为:
    "C:\Users\xiaoyuzhou\Desktop\Python笔记新\第9章 文件读写\文件路径\相对路径\描述方式.txt"

    b.py 文件绝对路径为:
    "C:\Users\xiaoyuzhou\Desktop\file\b_file\b.py"

    观察上述2个绝对路径,发现两个文档绝对路径有相同的部分,即都在C:\Users\xiaoyuzhou\Desktop下。

    人工操作:我们现在打开的是b.py 文件,b.py 文件所在的目录为b_file文件夹。要打开 ,首先我们往回退2次:
    第1次:回到file文件夹;第2第:退到Desktop。然后打开桌面的Python笔记新文件夹,依次往下打开文件,就能找到 文档。

    操作中,我们往回退了2次,所以表述时需要用两个 。
    是用来表示回退的次数。

    txt = open (
    '..\\..\\
    Python笔记新\第9章 文件读写\文件路径\相对路径\描述方式.txt',
    encoding=)
    文件夹往上走几层就用几个..\\ 。

    1.4 相对路径的写法

    相对路径一开始我也很难理解,后来查阅一些资料,也咨询了一些朋友,得出下面的结论,不一定准确,仅供大家参考。
    我个人理解的相对路径写法就是用.\\ 代替2个文件绝对路径的共同部分。
    ..\ 表是文件夹往上走。往上走几层,就用几个
    .\ 表示文件是同层或者往下走。

    # b.py  xxx.txt 文件绝对路径如下  
    # "C:\Users\xiaoyuzhou\Desktop\file\b_file\b.py"
    # "C:\Users\xiaoyuzhou\Desktop\file\xxx.txt" 
    # xxx.txt在b.py的上级 
    txt = open ('..\\xxx.txt',encoding=)
    好好学习,天天向上!!!
    # b.py  aaa.txt 文件绝对路径如下  
    
    # "C:\Users\xiaoyuzhou\Desktop\file\a_file\aaa.txt"
    # aaa.txt在b.py的上级 
    txt = open (,encoding=)
     
    # b.py  bbb.txt 文件绝对路径如下  
    
    # "C:\Users\xiaoyuzhou\Desktop\file\b_file\bbb.txt"
    # bbb.txt和b.py同级
    txt = open (,encoding=)
     
    # b.py  ccc.txt 文件绝对路径  
    
    # "C:\Users\xiaoyuzhou\Desktop\file\b_file\c_file\ccc.txt"
    # ccc.txt 在b.py的下一级
    txt = open (,encoding=)
     
    # b.py 描述方式.txt 文件绝对路径  
    
    # "C:\Users\xiaoyuzhou\Desktop\Python笔记新\第9章 文件读写\文件路径\相对路径\描述方式.txt"
    # b.py往上走2层可以走到共同的Desktop
    txt = open (
    '..\\..\\Python笔记新\第9章 文件读写\文件路径\相对路径\描述方式.txt',encoding=)
     

    1.5 相对路径的作用

    当我们要把代码共享个其他人的时候,如果代码里用的是绝对路径,大家的用户名通常不一样,就会导致路径不一样,大家拿到代码还需要修改路径才能正常运行。
    但连同文件一起拷贝,使用相对路径表述不用修改就可以正常运行。
    相对路径通常用于存储在一起的文档,如果两者跨层较大,还是选用绝对路径。

    1.6 总结

    转自:https://baijiahao.baidu.com/s?id=1728604012300379495&wfr=spider&for=pc
     
  • 相关阅读:
    Maven使用教程
    [转载]DIV CSS设计时IE6、IE7、FF 与兼容性有关的特性
    ASP.NET MVC 开篇
    基于WebForm+EasyUI的业务管理系统形成之旅 -- ParamQueryGrid行、列合并(Ⅸ)
    基于WebForm+EasyUI的业务管理系统形成之旅 -- 施工计划查询(Ⅷ)
    浅析WCF与WebService、WPF与Silverlight 区别
    LeetCode-3Sum Smaller
    LeetCode-Different Ways to Add Parentheses
    LeetCode-Count Univalue Subtrees
    LeetCode-Decode String
  • 原文地址:https://www.cnblogs.com/hanfanfan/p/16418650.html
Copyright © 2020-2023  润新知