【python】路径管理+路径拼接问题

这篇具有很好参考价值的文章主要介绍了【python】路径管理+路径拼接问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题

环境:python3.7.16 win10

相对路径问题

因为python的执行特殊性,使用相对路径时,在不同路径下用python指令会有不同的索引效果(python的项目根目录是根据执行python语句时的根目录,像是其他项目因为有包管理工具vue-cli或webpack等进行管理,会固定项目根目录),所以最好规定执行项目路径。
【python】路径管理+路径拼接问题,py,python,项目管理,路径,相对路径,python相对路径,路径拼接
上图中第一次运行跟路径是’S:\varcode-project\py’,第二次是’S:\varcode-project’

绝对路径问题

使用绝对路径时,项目移动时,索引基本会发生错误(因为项目的路径变化了)。

解决

因此,最好使用绝对路径+相对路径组合的形式。只要我规定文件内路径按照项目路径来写相对路径,并通过绝对路径计算出当前项目路径,将两者加以组合,那么无论项目如何移动路径索引都没问题了。

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)

【python】路径管理+路径拼接问题,py,python,项目管理,路径,相对路径,python相对路径,路径拼接

很明显出现拼接错误,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】路径管理+路径拼接问题,py,python,项目管理,路径,相对路径,python相对路径,路径拼接
一样会根据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】路径管理+路径拼接问题,py,python,项目管理,路径,相对路径,python相对路径,路径拼接

最终解决2

可能有小伙伴发现以上方案还是不能使代码在linux上正常运行。
【python】路径管理+路径拼接问题,py,python,项目管理,路径,相对路径,python相对路径,路径拼接
这是因为在linux路径分割符不是反斜杠’\‘,而是斜杠’/',具体参考这篇文章。并且使用斜杠后windows上的代码也能正常运行,因此最好培养自己写路径用斜杠的好习惯。修改代码如下:文章来源地址https://www.toymoban.com/news/detail-743040.html

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】路径管理+路径拼接问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python Django项目学生管理系统

    涉及技术: 后台:Django mysql 前端:Html css js Ajax boostrap 数据库:MySQL5.7 管理系统使用Xadmin框架,内置Bootstrap3、插件库 登录注册:普通用户与管理人员入口不同,老师及学生通过状态选择验证。 权限管理:权限组管理及个人权限管理。 基本信息管理:针对用户(学生,老师

    2024年02月03日
    浏览(37)
  • golang文件相对路径问题

    目录结构 2.具体代码:

    2024年01月17日
    浏览(38)
  • 信息系统项目管理师023:云计算(2信息技术发展,网络安全面试问题

    2.关键技术 云计算的关键技术主要涉及虚拟化技术、云存储技术、多租户和访问控制管理、云安全技术等。 1)虚拟化技术 虚拟化是一个广义术语,在计算机领域通常是指计算元件在虚拟的基础上而不是真实的基础上运行。虚拟化技术可以扩大硬件的容量,简化软件的重新配

    2024年04月12日
    浏览(34)
  • 96 | Python 小项目—— 学生成绩管理系统

    学生成绩管理系统是一个简单的学生课程管理系统,旨在帮助学校或教育机构轻松管理学生的成绩和课程信息。系统提供了登录界面,只有管理员可以访问数据。通过创建一个CSV文件来存储学生信息,可以对数据进行修改和读取。系统使用TKINTER库创建了用户界面,实现了学生

    2024年02月13日
    浏览(33)
  • Python面向对象项目练习:商品信息管理系统

    1、编写一个商品库存信息管理系统,用户根据操作菜单进行相关操作 2、该系统可对商品进行增、删、改、查、统计等基本操作。 1、创建商品类,用户根据要求输入商品名称、价格、数量、编号等信息 2、创建仓库类,该类拥有五个方法。add_product用于增加商品信息,需判断

    2024年02月11日
    浏览(35)
  • python+django+mysql项目实践三(用户管理)

    Pycharm 开发环境 Django 前端 MySQL 数据库 Navicat 数据库管理

    2024年02月14日
    浏览(29)
  • Python项目开发案例————学生信息管理系统(附源码)

              本文使用Python语言开发了一个学生信息管理系统,该系统可以帮助教师快速录入学生的信息,并且对学生的信息进行基本的增、删、改、查操作;还可以实时地将学生的信息保存到磁盘文件中。         为了顺应互联网时代用户的获取数据需求,学生信息管理系统

    2024年02月11日
    浏览(36)
  • 记关于解决vscode相对路径设置的问题

    我在使用vscode编辑python项目时发现,vscode与其他IDE不同,它在执行代码的时候路径并非是从当前执行文件开始查找,而是从工作文件夹的最顶级目录开始。 如上我在工作文件夹-1中有test.txt 和 test文件夹下的test.py,在test.py中读取使用相对路径读取test.txt文件,vscode会从文件夹

    2024年02月19日
    浏览(30)
  • python+django高校教材共享管理系统PyCharm 项目

    本中原工学院教材共享平台采用的数据库是mysql,使用nodejs技术开发。在设计过程中,充分保证了系统代码的良好可读性、实用性、易扩展性、通用性、便于后期维护、操作方便以及页面简洁等特点。系统所要实现的功能分析,对于现在网络方便的管理,系统要实现用户可以

    2024年02月03日
    浏览(35)
  • python文件读取&导包的绝对路径、相对路径

    😊 作者简介 :大家好我是hellobigorange,大家可以叫我大橙子 📃 个人主页 :hellobigorange的个人主页 📰如果觉得博主的文章还不错的话,请👍三连支持一下博主哦🤞 💖 本文摘要 :本文主要讲述了文件读取的绝对路径和相对路径;导包的绝对路径和相对路径,以及当前工作

    2023年04月08日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包