热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

文件路径的生成及其在文件操作中的应用

本文介绍了文件路径的生成方法及其在文件操作中的应用。在进行文件操作时,需要知道文件的具体位置才能打开文件。文件的位置有绝对路径和相对路径之分。绝对路径通常只在特定电脑上有效,不同电脑上的文件存放路径可能不同,导致程序报错。相对路径是解决这个问题的最好方式,它不依赖于文件的具体存放位置,只需要按照统一的规范进行文件存放即可。使用相对路径可以避免冗余和麻烦,特别适用于大项目和团队维护代码的情况。

  一、当我们在进行文件操作的时候,首先得知道文件的具体位置才能利用内置函数open()打开,而文件的这个“位置”又有“绝对”与“相对”之分。

  我们可以这样理解:文件的“绝对路径”绝大多数情况下只有在我们自己的电脑上才有效,除非不同的电脑里这两个文件存放的盘符与路径完全一致。例如,张三做的一个项目里有一个名为whw.txt的文件存放着一些用户需求信息,该文件在张三电脑里的存放路径为:D:\user\whw.txt;有一天张三去忙另外一个项目把现有的程序交给李四维护,同样的文件whw.txt在李四的电脑里存放的路径变成了E:\Python\exercise\ex11\whw.txt,如果程序里面还用张三之前的存放路径肯定会报错。对于李四而言虽然只要将文件的存放路径按照张三之前的路径改动一下就可以了,但是,对于一个大项目有几十个甚至上百个文件、一个团队十几人共同维护代码的情况下,必须强制所有人都得按照同样的规范进行文件存放,这样势必给开发带来不必要的冗余甚至麻烦。

  二、而“相对路径”是解决这个问题的最好的方式,它并不纠结于文件具体的存放位置,只要先找到编程人员“源程序运行的位置”,然后在源程序的根目录下添加该文件相对于源程序的目录即可。具体操作方式如下:

 

  如上图所示,我们的源程序1.py有一个相同目录下的path文件夹里的rtr.txt文件需要操作。

  首先,我们利用os模块找到源程序的路径并将它赋值给变量BASE_DIR:

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

找到源程序在我们本电脑的路径后,我们只要把path文件夹里的rtr.txt文件再“追加”到这个存放着源程序目录的变量 BASE_DIR 后面即可:

_path_rtr1 = os.path.join(BASE_DIR,'path','rtr.txt')

  程序的运行效果如下:

  三、其实,关于相对路径的“追加”除了os.path.join()方法 之外还有一种方式,就拿上面的例子来讲,我们也可以这样追加:

_path_rtr2 = BASE_DIR + r'\path\rtr.txt'

  效果如下:

  运行效果与os.path.join()方法一致。但是二者的区别又在哪里呢?

  这与程序运行的操作系统有关。

  我们知道,文件在linux的目录格式为E:/practice/exercise/PRACTICE,而windows操作系统下的格式是:E:\practice]\exercise\PRACTICE。二者斜杠的方向不同。很显然,如果我们用第二种方式去追加文件的相对路径,该程序仅能在windows下运行,而第一种方式生成的路径会根据操作系统的不同生成不同的目录格式。我们都知道python的一大优势便是“跨平台”,所以在实际中建议大家用os.path.join()方法去生成文件的相对路径。

 

转:https://www.cnblogs.com/paulwhw/p/8889043.html



推荐阅读
  • PyCharm下载与安装指南
    本文详细介绍如何从官方渠道下载并安装PyCharm集成开发环境(IDE),涵盖Windows、macOS和Linux系统,同时提供详细的安装步骤及配置建议。 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • python的交互模式怎么输出名文汉字[python常见问题]
    在命令行模式下敲命令python,就看到类似如下的一堆文本输出,然后就进入到Python交互模式,它的提示符是>>>,此时我们可以使用print() ... [详细]
  • CentOS7源码编译安装MySQL5.6
    2019独角兽企业重金招聘Python工程师标准一、先在cmake官网下个最新的cmake源码包cmake官网:https:www.cmake.org如此时最新 ... [详细]
  • 解决Linux系统中pygraphviz安装问题
    本文探讨了在Linux环境下安装pygraphviz时遇到的常见问题,并提供了详细的解决方案和最佳实践。 ... [详细]
  • 离线环境下的Python及其第三方库安装指南
    在项目开发中,有时会遇到电脑只能连接内网或完全无法联网的情况。本文将详细介绍如何在这种环境下安装Python及其所需的第三方库,确保开发工作的顺利进行。 ... [详细]
  • Docker的安全基准
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • Explore how Matterverse is redefining the metaverse experience, creating immersive and meaningful virtual environments that foster genuine connections and economic opportunities. ... [详细]
  • 本文总结了2018年的关键成就,包括职业变动、购车、考取驾照等重要事件,并分享了读书、工作、家庭和朋友方面的感悟。同时,展望2019年,制定了健康、软实力提升和技术学习的具体目标。 ... [详细]
  • Java 中的 BigDecimal pow()方法,示例 ... [详细]
  • 探讨如何高效使用FastJSON进行JSON数据解析,特别是从复杂嵌套结构中提取特定字段值的方法。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 使用 Azure Service Principal 和 Microsoft Graph API 获取 AAD 用户列表
    本文介绍了一段通用代码示例,该代码不仅能够操作 Azure Active Directory (AAD),还可以通过 Azure Service Principal 的授权访问和管理 Azure 订阅资源。Azure 的架构可以分为两个层级:AAD 和 Subscription。 ... [详细]
author-avatar
mobiledu2502922957
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有