【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…...
SGLang-v0.5.6备份策略详解:零基础学会模型状态保存与恢复
SGLang-v0.5.6备份策略详解:零基础学会模型状态保存与恢复 1. 引言 想象一下,你正在和一个AI助手进行一场长达半小时的深度对话,从技术讨论到方案规划,聊得非常投入。突然,服务器需要重启升级,或者程序意…...
窗口像素重构技术:重新定义显示分辨率控制范式
窗口像素重构技术:重新定义显示分辨率控制范式 【免费下载链接】SRWE Simple Runtime Window Editor 项目地址: https://gitcode.com/gh_mirrors/sr/SRWE 问题溯源:窗口分辨率控制的行业痛点解析 在数字内容创作与专业显示领域,窗口分…...
OpenClaw备份策略:保障SecGPT-14B自动化任务不间断运行
OpenClaw备份策略:保障SecGPT-14B自动化任务不间断运行 1. 为什么需要备份策略? 去年冬天的一个深夜,我的OpenClaw自动化任务突然崩溃了。当时正在执行一个关键的网络安全日志分析任务,SecGPT-14B模型已经连续工作了6个小时&…...
OpenClaw+SecGPT-14B技能扩展:自动化渗透测试报告生成
OpenClawSecGPT-14B技能扩展:自动化渗透测试报告生成 1. 为什么需要自动化渗透测试报告 每次红队演练结束后,最让我头疼的就是整理渗透测试报告。传统流程需要手动整理Nmap扫描结果、Burp Suite截图、漏洞验证步骤,再粘贴到Word模板里调整格…...
智能视频下载解决方案:VideoDownloadHelper高效使用指南
智能视频下载解决方案:VideoDownloadHelper高效使用指南 【免费下载链接】VideoDownloadHelper Chrome Extension to Help Download Video for Some Video Sites. 项目地址: https://gitcode.com/gh_mirrors/vi/VideoDownloadHelper 在数字化时代,…...
黑马点评项目扩展:为本地生活平台集成AI人脸生成会员头像功能
黑马点评项目扩展:为本地生活平台集成AI人脸生成会员头像功能 不知道你有没有发现,现在很多本地生活类App,比如我们熟悉的“黑马点评”,用户头像区总是千篇一律。要么是默认的灰色头像,要么就是随手拍的生活照&#x…...
如何3步实现Windows任务栏透明美化:TranslucentTB完整使用指南
如何3步实现Windows任务栏透明美化:TranslucentTB完整使用指南 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB TranslucentTB…...
智能家居中枢:OpenClaw+Qwen3-14B镜像控制HomeAssistant
智能家居中枢:OpenClawQwen3-14B镜像控制HomeAssistant 1. 为什么需要AI驱动的智能家居中枢? 去年装修新房时,我安装了近30个智能设备——从窗帘电机到温湿度传感器,全部接入了HomeAssistant系统。但很快发现一个问题࿱…...
DeepSeek-OCR-2创新研究:基于LSTM的文本行识别优化
DeepSeek-OCR-2创新研究:基于LSTM的文本行识别优化 1. 引言 OCR技术发展到今天,已经不再是简单的文字识别工具,而是成为了理解文档内容、解析复杂布局的智能系统。DeepSeek-OCR-2作为新一代文档识别模型,在准确率和处理效率上都…...
FineReport 11安装配置全攻略:从下载到问题解决一站式指南
FineReport 11实战指南:从零搭建企业级报表平台 在企业数字化转型浪潮中,数据可视化与报表工具已成为刚需。作为国内领先的商业智能解决方案,FineReport 11凭借其强大的数据连接能力、灵活的报表设计功能和直观的操作界面,正成为越…...
