当前位置: 首页 > news >正文

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打开的文件夹不同,则相对路径就不同。

  1. 单击vscode编辑器左上角的资源管理器,下面会出现一个当前文件夹的文件目录;

  2. 鼠标右键点击旅游.txt文件;

  3. 点击复制相对路径,就能得到旅游.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数据的击穿、穿透、雪崩等...,以及相关的面试题&#xff0…...

关于进行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…...

循环冗余码校验CRC码 算法步骤+详细实例计算

通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)&#xff0…...

全球首个30米分辨率湿地数据集(2000—2022)

数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验

一、多模态商品数据接口的技术架构 (一)多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如,当用户上传一张“蓝色连衣裙”的图片时,接口可自动提取图像中的颜色(RGB值&…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!

5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...

生成 Git SSH 证书

🔑 1. ​​生成 SSH 密钥对​​ 在终端(Windows 使用 Git Bash,Mac/Linux 使用 Terminal)执行命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" ​​参数说明​​: -t rsa&#x…...

ETLCloud可能遇到的问题有哪些?常见坑位解析

数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验

系列回顾: 在上一篇中,我们成功地为应用集成了数据库,并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了!但是,如果你仔细审视那些 API,会发现它们还很“粗糙”:有…...

免费PDF转图片工具

免费PDF转图片工具 一款简单易用的PDF转图片工具,可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件,也不需要在线上传文件,保护您的隐私。 工具截图 主要特点 🚀 快速转换:本地转换,无需等待上…...

HybridVLA——让单一LLM同时具备扩散和自回归动作预测能力:训练时既扩散也回归,但推理时则扩散

前言 如上一篇文章《dexcap升级版之DexWild》中的前言部分所说,在叠衣服的过程中,我会带着团队对比各种模型、方法、策略,毕竟针对各个场景始终寻找更优的解决方案,是我个人和我司「七月在线」的职责之一 且个人认为&#xff0c…...

上位机开发过程中的设计模式体会(1):工厂方法模式、单例模式和生成器模式

简介 在我的 QT/C 开发工作中,合理运用设计模式极大地提高了代码的可维护性和可扩展性。本文将分享我在实际项目中应用的三种创造型模式:工厂方法模式、单例模式和生成器模式。 1. 工厂模式 (Factory Pattern) 应用场景 在我的 QT 项目中曾经有一个需…...