当前位置: 首页 > 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…...

C++初阶-list的底层

目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...

深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法

深入浅出:JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中,随机数的生成看似简单,却隐藏着许多玄机。无论是生成密码、加密密钥,还是创建安全令牌,随机数的质量直接关系到系统的安全性。Jav…...

React19源码系列之 事件插件系统

事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...

DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”

目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...

laravel8+vue3.0+element-plus搭建方法

创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...

算法岗面试经验分享-大模型篇

文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer (1)资源 论文&a…...

LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》

这段 Python 代码是一个完整的 知识库数据库操作模块,用于对本地知识库系统中的知识库进行增删改查(CRUD)操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 📘 一、整体功能概述 该模块…...

Kafka入门-生产者

生产者 生产者发送流程: 延迟时间为0ms时,也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于:异步发送不需要等待结果,同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...

DBLP数据库是什么?

DBLP(Digital Bibliography & Library Project)Computer Science Bibliography是全球著名的计算机科学出版物的开放书目数据库。DBLP所收录的期刊和会议论文质量较高,数据库文献更新速度很快,很好地反映了国际计算机科学学术研…...

土建施工员考试:建筑施工技术重点知识有哪些?

《管理实务》是土建施工员考试中侧重实操应用与管理能力的科目,核心考查施工组织、质量安全、进度成本等现场管理要点。以下是结合考试大纲与高频考点整理的重点内容,附学习方向和应试技巧: 一、施工组织与进度管理 核心目标: 规…...