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…...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...
简易版抽奖活动的设计技术方案
1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...
大数据零基础学习day1之环境准备和大数据初步理解
学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 (1)设置网关 打开VMware虚拟机,点击编辑…...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...
零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...
关于 WASM:1. WASM 基础原理
一、WASM 简介 1.1 WebAssembly 是什么? WebAssembly(WASM) 是一种能在现代浏览器中高效运行的二进制指令格式,它不是传统的编程语言,而是一种 低级字节码格式,可由高级语言(如 C、C、Rust&am…...
Yolov8 目标检测蒸馏学习记录
yolov8系列模型蒸馏基本流程,代码下载:这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中,**知识蒸馏(Knowledge Distillation)**被广泛应用,作为提升模型…...
PostgreSQL——环境搭建
一、Linux # 安装 PostgreSQL 15 仓库 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm# 安装之前先确认是否已经存在PostgreSQL rpm -qa | grep postgres# 如果存在࿰…...
c++第七天 继承与派生2
这一篇文章主要内容是 派生类构造函数与析构函数 在派生类中重写基类成员 以及多继承 第一部分:派生类构造函数与析构函数 当创建一个派生类对象时,基类成员是如何初始化的? 1.当派生类对象创建的时候,基类成员的初始化顺序 …...
uniapp 实现腾讯云IM群文件上传下载功能
UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中,群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS,在uniapp中实现: 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...
