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

EVA-02在社交媒体分析中的应用:舆情摘要与情感倾向判断

EVA-02在社交媒体分析中的应用:舆情摘要与情感倾向判断 最近跟一个做品牌营销的朋友聊天,他正为每天要处理海量的社交媒体评论发愁。团队几个人盯着屏幕,手动翻看、记录、总结,不仅效率低,还容易漏掉关键信息。他问我…...

RVC模型计算机组成原理视角:理解AI推理的硬件底层

RVC模型计算机组成原理视角:理解AI推理的硬件底层 你是不是觉得AI模型推理就像一个黑盒子?输入一段音频,点一下按钮,等一会儿,就得到了变声后的结果。整个过程看似简单,但背后却是一场在GPU硬件上精密上演…...

从一份清洗报告,看共享单车数据如何‘说话’:以厦门市为例的出行模式洞察

解码共享单车数据:厦门市民出行行为的商业洞察 清晨7点的厦门街头,一位上班族扫开共享单车,骑行1.2公里到达地铁站;傍晚6点,游客沿着环岛路悠闲骑行3公里欣赏日落。这些看似独立的出行片段,当汇聚成百万量级…...

从PHY芯片到TCP/IP协议栈:用Wireshark抓包分析lwIP的ethernetif_input全流程

从PHY芯片到TCP/IP协议栈:用Wireshark抓包分析lwIP的ethernetif_input全流程 在嵌入式网络开发中,理解数据从物理层到协议栈的完整传输路径至关重要。本文将结合STM32F7开发板实战,通过Wireshark抓包与示波器波形双重验证,深入解析…...

小白也能学会:Qwen3-ForcedAligner字幕生成,操作简单效果专业

小白也能学会:Qwen3-ForcedAligner字幕生成,操作简单效果专业 1. 为什么你需要这个字幕生成工具? 视频创作者和内容生产者经常面临一个共同难题:如何高效地为视频添加精准的字幕。传统手动添加字幕不仅耗时费力,而且…...

langchain核心组件1-智能体

这里写目录标题简介基础使用静态模型使用动态模型简介 langchain版本 v1.x 在此版本中,langchain可以创建一个智能体 基础使用 我日常使用因为是直接对话,所以基本上只需要以下几个组件 model: 定义智能体大脑,是大语言模型地…...

OpenClaw多模型切换:nanobot镜像动态加载不同规格Qwen

OpenClaw多模型切换:nanobot镜像动态加载不同规格Qwen 1. 为什么需要动态切换模型 在本地部署AI助手时,我发现一个痛点:不同任务对模型能力的需求差异很大。简单任务如整理文件、生成周报草稿,用7B参数模型完全够用;…...

想拥有专属的桌面宠物伙伴吗?DyberPet开源框架让个性化养成触手可及

想拥有专属的桌面宠物伙伴吗?DyberPet开源框架让个性化养成触手可及 【免费下载链接】DyberPet Desktop Cyber Pet Framework based on PySide6 项目地址: https://gitcode.com/GitHub_Trending/dy/DyberPet 你是否曾希望电脑桌面上能有一个可爱的虚拟伙伴&a…...

OpenClaw团队协作版:ollama-QwQ-32B支持多用户任务隔离实践

OpenClaw团队协作版:ollama-QwQ-32B支持多用户任务隔离实践 1. 为什么我们需要团队协作版的OpenClaw 去年我带领一个5人内容团队时,遇到了一个典型问题:每个人都想用AI自动化处理日常工作,但共享同一套系统会导致文件混乱、任务…...

能耗监控系统:OpenClaw+nanobot自动记录电脑用电数据并生成报告

能耗监控系统:OpenClawnanobot自动记录电脑用电数据并生成报告 1. 为什么需要自动化能耗监控 去年夏天,我的电费账单突然比平时高了30%。作为程序员,我第一反应是排查电脑设备的用电情况。但手动记录USB电表数据实在太麻烦——需要定时查看…...