68. Python的相对路径
68. Python的相对路径
文章目录
- 68. Python的相对路径
- 1. 知识回顾
- 2. 什么是相对路径
- 3. 相对路径的语法
- 4. 查看相对路径的方法
- 5. 写出所有txt文件的相对路径
- 5.1 同目录
- 5.2 上级目录
- 6. 用相对路径读取txt文件
- 6.1 读取旅游.txt
- 6.2 读取旅游经费.txt
- 6.3 读取笔记.txt和new.txt
- 6.4 读取目标.txt文件
- 7. 上2级目录
- 7.1 同级目录
- 7.2 上级目录
- 7.3 上2级目录
- 7.4 有分支的上级目录
- 8. 总结
1. 知识回顾
绝对路径是指文件在硬盘上真正存在的路径。
就是从盘符(C盘、D盘、E盘、F盘)开始一直到文件所在的具体位置。
绝对路径 = 邮寄地址
绝对路径就相当于生活中的邮寄地址,邮寄地址总是从省份开头,然后到市县、到街区再到具体门牌号。
武汉大学的地址是:湖北省武汉市武昌区八一路299号。这就是一个绝对路径,通常是邮寄东西才会用的地址。
2. 什么是相对路径
相对路径 = 打车地址
相对路径的相对,顾名思义就是相对某个参考对象而言的。
假设你本人已经在武汉市,你打车的时候你会跟司机说去武汉大学,或者说是去武昌区八一路。
你肯定不会跟司机说去湖北省武汉市某某地方,省份和市通常是被你省略了。
Python中的相对路径基本等同于打车地址这一概念。
相对路径是针对当前文件夹这一参考对象,来描述文件路径的形式。
当前文件夹是指我们编程使用的编辑器打开的文件夹。
【温馨提示】
我刚开始接触相对路径的时候,总是以打开的py文件为参考对象,相对路径总是报错。
后来琢磨了下,才发现,当前文件夹不是指py文件所在的文件夹,是指编辑器打开的文件夹。
3. 相对路径的语法
相对路径使用两个特殊符号表示:点(.) 和双点(…)。
一个点. 表示文件或文件夹所在的当前目录。
两个点… 表示当前目录的上一级目录。
上n级就用n个… 表示。
找相对路径的重点在于找到编辑器打开的文件夹。
4. 查看相对路径的方法
我用的是vscode编辑器,相对路径的参考对象就是我的编辑器打开的文件夹。
现在,我用vscode打开名为生活的文件夹。

选择生活文件夹。

这一步很重要,vscode打开的文件夹不同,则相对路径就不同。
-
单击vscode编辑器左上角的
资源管理器,下面会出现一个当前文件夹的文件目录; -
鼠标右键点击
旅游.txt文件; -
点击
复制相对路径,就能得到旅游.txt文件的相对路径,如下所示:
旅游.txt

【备注】
在当前文件夹下,vscode省略了.\,所有才得到了上面的相对路径。
.\是可以省略的。
.\要不要程序都不会报错,大家根据自己的习惯编写即可。
旅游.txt文件的相对路径完整的表述如下所示:
.\旅游.txt
【语法解析】
.\表示当前文件夹,即.\指代生活文件夹。
同样的方法,查看旅游经费.txt的相对路径,如下所示:
年度预算\旅游经费.txt
旅游经费.txt文件的相对路径完整的表述如下所示:
.\年度预算\旅游经费.txt
5. 写出所有txt文件的相对路径
【准备工作】
在年度预算文件夹里新建一个绝对.py文件。
【写相对路径】
当前我打开的文件夹为生活,即当前目录为生活。
那我们要编辑的所有文件的相对路径就是相对于生活文件夹来确定的。

5.1 同目录
旅游.txt和旅游经费.txt文件都在生活文件里,即在当前目录下,相对路径用.\表示:
旅游.txt的相对路径为:.\旅游.txt
旅游经费.txt的相对路径为.\年度预算\旅游经费.txt
5.2 上级目录
笔记.txt和new.txt在安迪文件夹中,安迪文件夹是生活文件的上一级,是上层目录,相对路径用..\表示:
笔记.txt的相对路径为..\笔记.txt
new.txt的相对路径为..\\new.txt
目标.txt文件在安迪文件夹下的工作文件夹里,安迪文件夹同样是上层目录,相对路径同样用..\表示:
目标.txt的相对路径为:..\工作\目标.txt
6. 用相对路径读取txt文件
6.1 读取旅游.txt
在绝对路径中,一个点. 表示文件所在的当前目录。
当前我打开的文件夹为生活,即当前目录为生活。
旅游.txt就在当前生活文件夹,因此相对路径为.\旅游.txt。
读取旅游.txt代码如下:
txt = open ('.\旅游.txt',encoding='utf-8')
print(txt.read())
【终端输出】
我想去西藏!
在当前文件夹下,.\可以省略:
txt = open ('旅游.txt',encoding='utf-8')
print(txt.read())
【终端输出】
我想去西藏!
6.2 读取旅游经费.txt
当前我打开的文件夹为生活,即当前目录为生活。
旅游经费.txt在当前生活文件夹里的年度预算文件夹里,因此相对路径为.\年度预算\旅游经费.txt。
读取旅游经费.txt代码如下:
txt = open ('.\年度预算\旅游经费.txt',encoding='utf-8')
print(txt.read())
【终端输出】
旅游经费2万元。
在当前文件夹下,.\可以省略:
txt = open ('年度预算\旅游经费.txt',encoding='utf-8')
print(txt.read())
【终端输出】
旅游经费2万元。
6.3 读取笔记.txt和new.txt
笔记.txt和new.txt在安迪文件夹中,安迪文件夹是生活文件的上一级,是上层目录,相对路径用..\表示:
笔记.txt的相对路径为..\笔记.txt
txt = open ('..\笔记.txt',encoding='utf-8')
print(txt.read())
【终端输出】
这是我的第300篇笔记!
读取new.txt
txt = open ('..\\new.txt',encoding='utf-8')
print(txt.read())
【终端输出】
路径里含有转义字符,程序会报错!
\n会被认为成转义字符,要多加一个反斜杠\,即为\\。
6.4 读取目标.txt文件
目标.txt文件在安迪文件夹下的工作文件夹里,安迪文件夹同样是上层目录,相对路径同样用..\表示:
目标.txt的相对路径为:..\工作\目标.txt
txt = open ('..\工作\目标.txt',encoding='utf-8')
print(txt.read())
【终端输出】
2023年的目标是新增1万个关注者!
这里的..\指代安迪文件夹。
7. 上2级目录
刚才我们的编辑器打开的是生活文件夹,我们是在路径.py中编写代码。
我们现在更换打开的文件夹。
用vscode编辑器打开年度预算文件夹,在绝对.py文件中编写代码。注意观察相对路径的变化。

7.1 同级目录
旅游经费.txt和年度预算在同一个文件夹里,属于统计目录,用.\表示:
txt = open ('.\旅游经费.txt',encoding='utf-8')
print(txt.read())
【终端输出】
旅游经费2万元。
7.2 上级目录
旅游.txt文件是在生活文件夹里,相对于年度预算文件夹,是上级目录,用..\表示:
txt = open ('..\旅游.txt',encoding='utf-8')
print(txt.read())
【终端输出】
我想去西藏!
7.3 上2级目录
笔记.txt和new.txt相对于年度预算文件夹而言,在上级文件夹生活的上级文件夹安迪里,我称为上2级目录,上2级目录,用两个..\表示:
txt = open ('..\..\笔记.txt',encoding='utf-8')
print(txt.read())
【终端输出】
这是我的第300篇笔记!
\n会被程序默认为转义字符,记得多加一个反斜杠\,即改写为\\
txt = open ('..\..\\new.txt',encoding='utf-8')
print(txt.read())
【终端输出】
路径里含有转义字符,程序会报错!
7.4 有分支的上级目录
目标.txt文件夹是在年度预算文件夹的上2级目录下的工作文件夹,我把这种情况称为有分支,有分支的情况下多添加一个分支的文件夹名即可。
txt = open ('..\..\工作\目标.txt',encoding='utf-8')
print(txt.read())
【终端输出】
2023年的目标是新增1万个关注者!
8. 总结
.\表示当前目录,指的是当前文件夹,打开的是生活文件夹,.\就代表生活;打开的是年度预算文件夹,.\就代表年度预算。
..\表示上一级目录,以打开年度预算文件夹为例,..\就表示年度预算文件夹的上级文件夹生活。
..\..\表示上2级目录,以打开年度预算文件夹为例,第1个..\代表的是上2级的文件夹安迪,第2个..\代表的上级文件夹生活。
【错误提示】
txt = open ('..\生活\旅游.txt',encoding='utf-8')
print(txt.read())
这是部分初学者会犯的错误。
初学者认为..\表示上一级,然后再写上级目录的文件夹名称生活。
上述代码错误的地方在于多添加了\生活。
大家注意,..\就已经指代了生活文件夹,只有有分支的情况下,才会写文夹名称。
大家可以理解成直系亲属是直接用..就能指代的。
只有旁系亲属才需要写文件夹名称。
相对路径的概念初学者会有点迷茫,但使用vscode的同学可以直接查看,多试几次就明白了。
相对路径的概念很重要,当爬虫的时候通常要保存的文件都使用相对路径,你不理解相对路径,可能就找不到你爬到的文件了哦!

相关文章:
68. Python的相对路径
68. Python的相对路径 文章目录68. Python的相对路径1. 知识回顾2. 什么是相对路径3. 相对路径的语法4. 查看相对路径的方法5. 写出所有txt文件的相对路径5.1 同目录5.2 上级目录6. 用相对路径读取txt文件6.1 读取旅游.txt6.2 读取旅游经费.txt6.3 读取笔记.txt和new.txt6.4 读…...
java数据类型
数据类型 类型分类,存储范围,字面量,默认值,类型转换 类型分类 存储范围 数据类型字节数表示范围byte1-128~127short2-32768~32767,正负3万左右int4-2147483648~2147483647,正负21亿左右long8-922337203…...
Kotlin 替换非空断言的几种方式
Kotlin 出现断言的两种情形 IDE java 与 kotlin 自动转换时,自动添加非空断言的代码Smart Cast 失效 代码展示: class JavaConvertExample {private var name: String? nullfun init() {name ""}fun foo() {name null;}fun test() {if (…...
2023年了,来试试前端格式化工具
在大前端时代,前端的各种工具链穷出不断,有eslint, prettier, husky, commitlint 等, 东西太多有的时候也是trouble😂😂😂,怎么正确的使用这个是每一个前端开发者都需要掌握的内容,请上车🚗&…...
spring cloud 企业工程项目管理系统源码+项目模块功能清单
工程项目各模块及其功能点清单 一、系统管理 1、数据字典:实现对数据字典标签的增删改查操作 2、编码管理:实现对系统编码的增删改查操作 3、用户管理:管理和查看用户角色 4、菜单管理:实现对系统菜单的增删改查操…...
TCP分片解析
本文目录什么是IP分片为什么会产生IP分片为什么要避免IP分片如何避免IP分片什么是IP分片 IP协议栈将TCP/UDP传输层要求它发送的,但长度大于发送端口MTU的一个数据包,分割成多个IP报文后分多次发送。这些分成多次发送的多个IP报文就是IP分片。 为什么会…...
开发了一款基于 Flask 框架的在线电影网站系统(附 Python 源码)
文章目录前言项目介绍源码获取运行环境安装依赖库项目截图首页展示图视频展示页视频播放页后台管理页整体架构设计图项目目录结构图前台功能模块图后台功能模块图本地运行图前言 今天我给大家分享的是基于 Python 的 Flask 框架开发的在线电影网站系统,大家平时需要…...
如何获得CSM--敏捷教练证书
1、什么是CSM?CSM即Certified Scrum Master,Scrum Master负责确保所有人都能正确地理解并实施Scrum,确保Scrum团队遵循Scrum的理论、实践和规则。Scrum Master是Scrum团队中的服务型领导,帮助Scrum团队外的人员了解他们如何与Scrum团队交互是…...
Java面试数据库
目录 一、关系型数据库 数据库权限 表设计及创建 表数据相关 数据库架构优化 二、非关系型数据库 redis 今天给大家稍微整理了一下,内容有数据表设计的三大范式原则、sql查询如何优化、redis数据的击穿、穿透、雪崩等...,以及相关的面试题࿰…...
关于进行vue-cli过程中的解决错误的问题
好久没发文章了,直到今天终于开始更新了,最近想进军全端,准备学习下vue,但是这东西真的太难了,我用了一天的时间来解决在配置中遇到的问题!主要问题:cnpm文件夹和vue-cli文件夹的位置不对并且vu…...
Rockchip Linux USB Gadget
一:概述 USB Gadget 是运行在 USB Peripheral 上配置 USB 功能的子系统,正常可被枚举的 USB 设备至少有 3 层逻辑层,有些功能还会在用户空间多跑一层逻辑代码。Gadget API 就是具体功能和硬件底层交互的中间层。从上到下,逻辑层分布为: USB Controller: USB上最底层的软…...
Linux -文件系统操作与帮助命令
1、Linux -文件系统操作 df — 查看磁盘的容量 df -h —以人类可以看懂的方式显示磁盘的容量,易读 du 命令查看目录的容量 # 默认同样以块的大小展示 du # 加上 -h 参数,以更易读的方式展示 du -h-d 参数指定查看目录的深度: # 只查看 1…...
UMI 创建react目录介绍及配置
UMI 生成react项目目录介绍及配置 react项目目录介绍umi多种配置方案运行时配置app.ts 的使用 1、umi创建的项目目录大致如下 ├─package.json 配置依赖以及启动打包所需的命令 ├─.umirc.ts 配置文件,包含 umi 内置功能和插件的配置 ├── dist 打包后生成的…...
基于matlab使用机器学习和深度学习进行雷达目标分类
一、前言此示例展示了如何使用机器学习和深度学习方法对雷达回波进行分类。机器学习方法使用小波散射特征提取与支持向量机相结合。此外,还说明了两种深度学习方法:使用SqueezeNet的迁移学习和长短期记忆(LSTM)递归神经网络。请注…...
Protocol Buffers V3语法全解
目录protobuf介绍protobuf使用protoc命令语法定义消息类型指定字段类型分配字段编号指定字段规则添加更多消息类型注释保留字段从.proto文件生成了什么?值类型默认值枚举使用其他消息类型导入定义嵌套类型更新消息类型未知字段any任意类型oneofoneof 特性兼容性问题…...
MediaPipe之人体关键点检测>>>BlazePose论文精度
BlazePose: On-device Real-time Body Pose tracking BlazePose:设备上实时人体姿态跟踪 论文地址:[2006.10204] BlazePose: On-device Real-time Body Pose tracking (arxiv.org) 主要贡献: (1)提出一个新颖的身体姿态跟踪解决…...
CSS从入门到精通专栏简介
先让我们来欣赏几个精美的网站: Matt Brett - Freelance Web Designer and WordPress Expert 2022 Year in Review • Letterboxd NIO蔚来汽车官方网站 小米官网 Silk – Interactive Generative Art 大屏数据可视化 你是否也有过这样的“烦恼”: * …...
day01常用DOS命令
day01课堂笔记(第一章 Java开发环境的搭建) 1、常用的DOS命令 1.1、怎么打开DOS命令窗口 win键 r (组合键):可以打开“运行”窗口 在运行窗口文本框中输入: cmd 然后回车 1.2、什么是DOS命令呢? 在DOS命令…...
Java设计模式-生成器模式(建造模式)
1.1定义 维基百科定义 生成器模式(英:Builder Pattern)是一种设计模式,又名:建造模式,是一种对象构建模式。 它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象…...
ansible的常用模块介绍
ansible 常用命令/usr/bin/ansible #Ansibe AD-Hoc 临时命令执行工具,常用于临时命令的执行/usr/bin/ansible-doc #Ansible 模块功能查看工具/usr/bin/ansible-galaxy #下载/上传优秀代码或Roles模块 的官网平台,基于网络的/usr/bin/ansible-playbo…...
Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...
Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)
目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...
UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...
系统设计 --- MongoDB亿级数据查询优化策略
系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log,共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题,不能使用ELK只能使用…...
Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)
引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...
零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)
本期内容并不是很难,相信大家会学的很愉快,当然对于有后端基础的朋友来说,本期内容更加容易了解,当然没有基础的也别担心,本期内容会详细解释有关内容 本期用到的软件:yakit(因为经过之前好多期…...
docker 部署发现spring.profiles.active 问题
报错: org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...
初学 pytest 记录
安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...
【JavaSE】多线程基础学习笔记
多线程基础 -线程相关概念 程序(Program) 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序,比如我们使用QQ,就启动了一个进程,操作系统就会为该进程分配内存…...
省略号和可变参数模板
本文主要介绍如何展开可变参数的参数包 1.C语言的va_list展开可变参数 #include <iostream> #include <cstdarg>void printNumbers(int count, ...) {// 声明va_list类型的变量va_list args;// 使用va_start将可变参数写入变量argsva_start(args, count);for (in…...
