当前位置:首页 >> 编程语言 >> 【python】路径管理+路径拼接问题,optimus 2x

【python】路径管理+路径拼接问题,optimus 2x

0evadmin 编程语言 1
文件名:【python】路径管理+路径拼接问题,optimus 2x 【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)

协助本站SEO优化一下,谢谢!
关键词不能为空
同类推荐
«    2025年12月    »
1234567
891011121314
15161718192021
22232425262728
293031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接