【python】路径管理+路径拼接问题
路径管理
- 问题
- 相对路径问题
- 绝对路径问题
- 解决
- os库
- pathlib库
- 最终解决
问题
环境:python3.7.16 win10
相对路径问题
因为python的执行特殊性,使用相对路径时,在不同路径下用python指令会有不同的索引效果(python的项目根目录根据执行python语句时,像是其他项目因为有包管理工具vue-cli或webpack,会固定项目根目录),所以最好规定执行项目路径。
绝对路径问题
使用绝对路径时,项目移动时,索引基本会发生错误(因为项目的路径变化了)。
解决
因此,最好使用绝对路径+相对路径组合的形式。只要我规定文件内路径按照项目路径来写相对路径,并通过绝对路径计算出当前项目路径,将两者加以组合,那么无论项目如何移动路径索引都没问题了。
os库
import os# 绝对路径
absolute_path = os.path.abspath(__file__)
# 相对路径
relative_path = "..\data\历史时间序列表.csv"
# 连接路径
combined_path = os.path.join(absolute_path, relative_path) print(absolute_path, relative_path)
print(combined_path)

很明显出现拼接错误,os.path.join函数只能将’s:\path’与’data.csv’组合,即在两个字符串中间简单加个’\',并不能正确解析双点‘..’的意义,因此这个方法不行。
pathlib库
from pathlib import Path # 相对路径
relative_path = Path("..\data\历史时间序列表.csv") # 获取绝对路径
absolute_path = relative_path.resolve() print(relative_path)
print(absolute_path)

一样会根据python语句的执行目录发生变化,因此这个方法也不行。
最终解决
os库藏了一个很鸡贼的方法os.path.normpath(path),并且无论你是问chat-gpt还是自己搜索相关问题,都不会给出这个函数。
import os# 绝对路径
absolute_path = os.path.abspath(__file__)
# 相对路径
relative_path = "..\data\历史时间序列表.csv"
# 先将当前文件的绝对路径的目录和相对路径拼接,然后使用normpath进行路径规范化
combined_path = os.path.normpath(os.path.join(os.path.dirname(absolute_path), relative_path)) print(absolute_path, relative_path)
print(combined_path)

相关文章:
【python】路径管理+路径拼接问题
路径管理 问题相对路径问题绝对路径问题 解决os库pathlib库最终解决 问题 环境:python3.7.16 win10 相对路径问题 因为python的执行特殊性,使用相对路径时,在不同路径下用python指令会有不同的索引效果(python的项目根目录根据执…...
C现代方法(第16章)笔记——结构、联合和枚举
文章目录 第16章 结构、联合和枚举16.1 结构变量16.1.1 结构变量的声明16.1.2 结构变量的初始化16.1.3 指示器(C99)16.1.4 对结构的操作 16.2 结构类型16.2.1 结构标记的声明16.2.2 结构类型的定义16.2.3 结构作为参数和返回值16.2.4 复合字面量(C99)16.2.5 匿名结构(C1X) 16.3…...
Python项目——识别指定物品
目录 1、百度EasyDL平台数据配置 1.1、训练图像上传 1.2、训练图像进行标注 1.3、训练模型 1.4、检验识别 1.5、申请发布 1.6、控制台权限配置 2、Python调用物体识别API 本项目是基于百度EasyDL平台制作的识别转盘内瓶子,且识别瓶子位置的一个项目。通过在…...
Spring-创建非懒加载的单例Bean源码
补充:关于扫描的逻辑 /*** Scan the class path for candidate components.* param basePackage the package to check for annotated classes* return a corresponding Set of autodetected bean definitions*/ public Set<BeanDefinition> findCandidateCo…...
Techlink TL24G06 网络变压器 10G 基座单端口变压器
功能特征: 1、符合IEEE 802.3标准。 2、符合RoHS。 3、工作温度范围:0C至70C。 4、储存温度范围:-20C至125C。...
Python操作PDF:PDF文件合并与PDF页面重排
处理大量的 PDF 文档是非常麻烦的事情,频繁地打开关闭文件会严重影响工作效率。对于一大堆内容相关的 PDF 文件,我们在处理时可以将这些 PDF 文件合并起来,作为单一文件处理,从而提高处理效率。同时,我们也可以选取不同…...
删除链表的倒数第n个节点(C++解法)
题目 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例 1: 输入:head [1,2,3,4,5], n 2 输出:[1,2,3,5]示例 2: 输入:head [1], n 1 输出:[]示例 3&#…...
Apache服务的搭建与配置(超详细版)
前言 Apache是一种常见的Web服务器软件,广泛用于Linux和其他UNIX操作系统上。它是自由软件,可以通过开放源代码的方式进行自由分发和修改。Apache提供了处理静态和动态内容的能力,而且还支持多种编程语言和脚本,如PHP、Python和P…...
设计模式大赏(一):桥接模式,组合模式
设计模式大赏(一):桥接模式,组合模式 导言 本篇文章是设计模式大赏中的第一篇文章,这个系列的文章中我们主要将介绍一些常见的设计模式,主要是我在看Android源码中发现用到的一些设计模式。本篇文章将主要…...
数据通信——应用层(DHCP的原理与配置)
引言 假如我们的网络中有N台设备,它们都要设置IP地址,如果人工去一个个配置不仅不方便管理还很麻烦。因此我们用DHCP来自动分配地址。 一,系统的启动流程 不仅是计算机、很多网络设备的启动流程如下: 设备上电后,硬件…...
力扣151.反转字符串中的单词
原题链接:力扣151.反转字符串中的单词 全代码: 需要复刷 class Solution { public:void reverse(string& s, int start, int end){ //翻转,区间写法:左闭右闭 []for (int i start, j end; i < j; i, j--) {swap(s[i],…...
vim三种模式,文本操作(操作字符/光标,列出行号可视化块模式/多文件查看)
目录 vim--文本编辑器 功能 基本概念 命令/默认模式 插入模式 底行模式 文本操作 引入 移动光标位置 删除字符 -- x/dd 复制/粘贴字符 -- yw/yyp 替换文本 -- r / %s 底行模式 全局替换 -- /g 撤销操作 -- u / ctrlr 修改字符 -- cw 示例 跳行 -- ctrlg 底行…...
jquery控制easyui中combobox、textbox显示隐藏
//combobox下拉框 $("#下拉框id.combo").hide();//textbox输入框 $("#输入框id.textbox").hide(); 参考网址: https://blog.csdn.net/Coldmood/article/details/128279727...
Android拖放startDragAndDrop拖拽onDrawShadow静态添加xml布局View,Kotlin(4)
Android拖放startDragAndDrop拖拽onDrawShadow静态添加xml布局View,Kotlin(4) import android.content.ClipData import android.graphics.Canvas import android.graphics.Point import android.os.Bundle import android.util.Log import a…...
Servlet 初始化参数(web.xml和@WebServlet)
1、通过web.xml方式 <?xml version"1.0" encoding"UTF-8"?> <web-app xmlns"http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://xmlns.jcp.org/xm…...
shell_62.shell脚本生成一个标准的 SQL INSERT 语句
无论是将文件读入脚本,还是将数据从脚本输出到文件,都会用到文件重定向,这是一种很 常见的操作。本节中的示例脚本两种功能皆有。它会读取 CSV 格式的数据文件,输出 SQL INSERT 语句,并将数据插入数据库。 shell 脚本使…...
华为ICT——第五章语音处理理论与实践
目录 语言学: 主要应用场景: 语言学: 语言学: 语音学(1) 语音学(2) 语音处理介绍: 人类语音的来源: 语言数据: 语言信号预处理: …...
ardupilot开发 --- SLAM 篇
1. 视觉SLAM 1.1 深度相机的种类 结构光相机,如 Kinect1.0、RealSenseTOF相机,如 Kinect2.0双目相机,如 ZED详细参考:https://zhuanlan.zhihu.com/p/282776636 1.2 视觉SLAM算法 2D slam 与3D slam 应用场景有哪些不同&#x…...
Elasticsearch:在你的数据上训练大型语言模型 (LLM)
过去的一两年,大型语言模型(LLM)席卷了互联网。 最近 Google 推出的 PaLM 2 和 OpenAI 推出的 GPT 4激发了企业的想象力。 跨领域构思了许多潜在的用例。 多语言客户支持、代码生成、内容创建和高级聊天机器人都是一些例子。 这些用例要求 LL…...
拓展卡尔曼滤波EKF
How to fusion two Gauss Distribution N ( x , μ 0 , σ 0 ) N ( x , μ 1 , σ 1 ) N ( x , μ ′ , σ ′ ) \begin{equation} \begin{aligned} \mathcal{N}(x,\mu_0,\sigma_0) \mathcal{N}(x,\mu_1,\sigma_1) \mathcal{N}(x,\mu,\sigma) \\ \end{aligned} \end{equatio…...
KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...
OpenLayers 可视化之热力图
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...
云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?
大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...
RocketMQ延迟消息机制
两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数,对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后…...
基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...
UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...
STM32F4基本定时器使用和原理详解
STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...
.Net Framework 4/C# 关键字(非常用,持续更新...)
一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...
LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf
FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...
接口自动化测试:HttpRunner基础
相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具,支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议,涵盖接口测试、性能测试、数字体验监测等测试类型…...
