当前位置: 首页 > news >正文

【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源码

补充&#xff1a;关于扫描的逻辑 /*** 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 基座单端口变压器

功能特征&#xff1a; 1、符合IEEE 802.3标准。 2、符合RoHS。 3、工作温度范围&#xff1a;0C至70C。 4、储存温度范围&#xff1a;-20C至125C。...

Python操作PDF:PDF文件合并与PDF页面重排

处理大量的 PDF 文档是非常麻烦的事情&#xff0c;频繁地打开关闭文件会严重影响工作效率。对于一大堆内容相关的 PDF 文件&#xff0c;我们在处理时可以将这些 PDF 文件合并起来&#xff0c;作为单一文件处理&#xff0c;从而提高处理效率。同时&#xff0c;我们也可以选取不同…...

删除链表的倒数第n个节点(C++解法)

题目 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1,2,3,5]示例 2&#xff1a; 输入&#xff1a;head [1], n 1 输出&#xff1a;[]示例 3&#…...

Apache服务的搭建与配置(超详细版)

前言 Apache是一种常见的Web服务器软件&#xff0c;广泛用于Linux和其他UNIX操作系统上。它是自由软件&#xff0c;可以通过开放源代码的方式进行自由分发和修改。Apache提供了处理静态和动态内容的能力&#xff0c;而且还支持多种编程语言和脚本&#xff0c;如PHP、Python和P…...

设计模式大赏(一):桥接模式,组合模式

设计模式大赏&#xff08;一&#xff09;&#xff1a;桥接模式&#xff0c;组合模式 导言 本篇文章是设计模式大赏中的第一篇文章&#xff0c;这个系列的文章中我们主要将介绍一些常见的设计模式&#xff0c;主要是我在看Android源码中发现用到的一些设计模式。本篇文章将主要…...

数据通信——应用层(DHCP的原理与配置)

引言 假如我们的网络中有N台设备&#xff0c;它们都要设置IP地址&#xff0c;如果人工去一个个配置不仅不方便管理还很麻烦。因此我们用DHCP来自动分配地址。 一&#xff0c;系统的启动流程 不仅是计算机、很多网络设备的启动流程如下&#xff1a; 设备上电后&#xff0c;硬件…...

力扣151.反转字符串中的单词

原题链接&#xff1a;力扣151.反转字符串中的单词 全代码&#xff1a; 需要复刷 class Solution { public:void reverse(string& s, int start, int end){ //翻转&#xff0c;区间写法&#xff1a;左闭右闭 []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(); 参考网址&#xff1a; https://blog.csdn.net/Coldmood/article/details/128279727...

Android拖放startDragAndDrop拖拽onDrawShadow静态添加xml布局View,Kotlin(4)

Android拖放startDragAndDrop拖拽onDrawShadow静态添加xml布局View&#xff0c;Kotlin&#xff08;4&#xff09; 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 语句

无论是将文件读入脚本&#xff0c;还是将数据从脚本输出到文件&#xff0c;都会用到文件重定向&#xff0c;这是一种很 常见的操作。本节中的示例脚本两种功能皆有。它会读取 CSV 格式的数据文件&#xff0c;输出 SQL INSERT 语句&#xff0c;并将数据插入数据库。 shell 脚本使…...

华为ICT——第五章语音处理理论与实践

目录 语言学&#xff1a; 主要应用场景&#xff1a; 语言学&#xff1a; 语言学&#xff1a; 语音学&#xff08;1&#xff09; 语音学&#xff08;2&#xff09; 语音处理介绍&#xff1a; 人类语音的来源&#xff1a; 语言数据&#xff1a; 语言信号预处理&#xff1a; …...

ardupilot开发 --- SLAM 篇

1. 视觉SLAM 1.1 深度相机的种类 结构光相机&#xff0c;如 Kinect1.0、RealSenseTOF相机&#xff0c;如 Kinect2.0双目相机&#xff0c;如 ZED详细参考&#xff1a;https://zhuanlan.zhihu.com/p/282776636 1.2 视觉SLAM算法 2D slam 与3D slam 应用场景有哪些不同&#x…...

Elasticsearch:在你的数据上训练大型语言模型 (LLM)

过去的一两年&#xff0c;大型语言模型&#xff08;LLM&#xff09;席卷了互联网。 最近 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备份策略详解&#xff1a;零基础学会模型状态保存与恢复 1. 引言 想象一下&#xff0c;你正在和一个AI助手进行一场长达半小时的深度对话&#xff0c;从技术讨论到方案规划&#xff0c;聊得非常投入。突然&#xff0c;服务器需要重启升级&#xff0c;或者程序意…...

窗口像素重构技术:重新定义显示分辨率控制范式

窗口像素重构技术&#xff1a;重新定义显示分辨率控制范式 【免费下载链接】SRWE Simple Runtime Window Editor 项目地址: https://gitcode.com/gh_mirrors/sr/SRWE 问题溯源&#xff1a;窗口分辨率控制的行业痛点解析 在数字内容创作与专业显示领域&#xff0c;窗口分…...

OpenClaw备份策略:保障SecGPT-14B自动化任务不间断运行

OpenClaw备份策略&#xff1a;保障SecGPT-14B自动化任务不间断运行 1. 为什么需要备份策略&#xff1f; 去年冬天的一个深夜&#xff0c;我的OpenClaw自动化任务突然崩溃了。当时正在执行一个关键的网络安全日志分析任务&#xff0c;SecGPT-14B模型已经连续工作了6个小时&…...

OpenClaw+SecGPT-14B技能扩展:自动化渗透测试报告生成

OpenClawSecGPT-14B技能扩展&#xff1a;自动化渗透测试报告生成 1. 为什么需要自动化渗透测试报告 每次红队演练结束后&#xff0c;最让我头疼的就是整理渗透测试报告。传统流程需要手动整理Nmap扫描结果、Burp Suite截图、漏洞验证步骤&#xff0c;再粘贴到Word模板里调整格…...

智能视频下载解决方案:VideoDownloadHelper高效使用指南

智能视频下载解决方案&#xff1a;VideoDownloadHelper高效使用指南 【免费下载链接】VideoDownloadHelper Chrome Extension to Help Download Video for Some Video Sites. 项目地址: https://gitcode.com/gh_mirrors/vi/VideoDownloadHelper 在数字化时代&#xff0c…...

黑马点评项目扩展:为本地生活平台集成AI人脸生成会员头像功能

黑马点评项目扩展&#xff1a;为本地生活平台集成AI人脸生成会员头像功能 不知道你有没有发现&#xff0c;现在很多本地生活类App&#xff0c;比如我们熟悉的“黑马点评”&#xff0c;用户头像区总是千篇一律。要么是默认的灰色头像&#xff0c;要么就是随手拍的生活照&#x…...

如何3步实现Windows任务栏透明美化:TranslucentTB完整使用指南

如何3步实现Windows任务栏透明美化&#xff1a;TranslucentTB完整使用指南 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB TranslucentTB…...

智能家居中枢:OpenClaw+Qwen3-14B镜像控制HomeAssistant

智能家居中枢&#xff1a;OpenClawQwen3-14B镜像控制HomeAssistant 1. 为什么需要AI驱动的智能家居中枢&#xff1f; 去年装修新房时&#xff0c;我安装了近30个智能设备——从窗帘电机到温湿度传感器&#xff0c;全部接入了HomeAssistant系统。但很快发现一个问题&#xff1…...

DeepSeek-OCR-2创新研究:基于LSTM的文本行识别优化

DeepSeek-OCR-2创新研究&#xff1a;基于LSTM的文本行识别优化 1. 引言 OCR技术发展到今天&#xff0c;已经不再是简单的文字识别工具&#xff0c;而是成为了理解文档内容、解析复杂布局的智能系统。DeepSeek-OCR-2作为新一代文档识别模型&#xff0c;在准确率和处理效率上都…...

FineReport 11安装配置全攻略:从下载到问题解决一站式指南

FineReport 11实战指南&#xff1a;从零搭建企业级报表平台 在企业数字化转型浪潮中&#xff0c;数据可视化与报表工具已成为刚需。作为国内领先的商业智能解决方案&#xff0c;FineReport 11凭借其强大的数据连接能力、灵活的报表设计功能和直观的操作界面&#xff0c;正成为越…...