热门标签 | 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



推荐阅读
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社区 版权所有