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…...
使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...
测试微信模版消息推送
进入“开发接口管理”--“公众平台测试账号”,无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息: 关注测试号:扫二维码关注测试号。 发送模版消息: import requests da…...
大语言模型如何处理长文本?常用文本分割技术详解
为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...
2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面
代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http…...
基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解
JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用,结合SQLite数据库实现联系人管理功能,并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能,同时可以最小化到系统…...
面向无人机海岸带生态系统监测的语义分割基准数据集
描述:海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而,目前该领域仍面临一个挑战,即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...
通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器
拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件: 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...
vue3 daterange正则踩坑
<el-form-item label"空置时间" prop"vacantTime"> <el-date-picker v-model"form.vacantTime" type"daterange" start-placeholder"开始日期" end-placeholder"结束日期" clearable :editable"fal…...
鸿蒙HarmonyOS 5军旗小游戏实现指南
1. 项目概述 本军旗小游戏基于鸿蒙HarmonyOS 5开发,采用DevEco Studio实现,包含完整的游戏逻辑和UI界面。 2. 项目结构 /src/main/java/com/example/militarychess/├── MainAbilitySlice.java // 主界面├── GameView.java // 游戏核…...
