解决文件路径的问题的总结
构建路径:
os.path 模块用来管理文件路径问题,它中包含了很多用以构建路径的函数,其中最常用的便是 join,abspath 以及 expanduser 函数:
join:拼接路径(不同的操作系统使用不同的分隔符拼接);
abspath:得到绝对路径;
expanduser:展开用户的 home 目录。
具体的操作实例如下所示:
>>> import os >>> os.getcwd() '/root/rocky0429' >>> os.listdir() ['test.py', 'c.py', 'b.txt', 'a.txt'] >>> os.path.join('~','rocky0429','a.txt') '~/rocky0429/a.txt' >>> os.path.abspath('.') '/root/rocky0429' >>> os.path.abspath('..') '/root' >>> os.path.abspath('../rocky0429/b.txt') '/root/rocky0429/b.txt' >>> os.path.expanduser('~') '/root' >>> os.path.expanduser('~/rocky0429') '/root/rocky0429' >>> os.path.expanduser('~/rocky0429/c.py') '/root/rocky0429/c.py'
上述代码中的 os.path 模块中的 abspath 函数用来返回一个相对路径的绝对路径,那么相应的,也会存在一个函数 isabs 来检查某路径是否为绝对路径:
>>> os.path.isabs('/root/rocky0429/test.py') True >>> os.path.isabs('~') False
当然在写代码的时候,有时候需要导入当前源文件所在目录下的其他包,这个时候就需要获取当前源文件的父目录,那么如何获取呢?我们可以用 __file__ 这个变量来表示,具体操作如下所示:
# coding:utf-8 import ossource_file_path = os.path.abspath(__file__)print('Current working directory : {}'.format(os.getcwd())) print('Source file address : {}'.format(source_file_path))
输入的结果如下所示:
Current working directory : /root/rocky0429 Source file address : /root/rocky0429/test.py
拆分路径
我们使用 Python 可以很方便的构建文件路径,当然也可以很舒服的对文件路径进行拆分,os.path 模块在拆分路径中常用的是 split/splitext,dirname 以及 basename 函数:
split:返回一个二元组,包括文件的路径和文件名;
splitext:也是返回一个二元组,包括扩展名和去除扩展名的部分;
dirname:返回文件所在路径;
basename:返回文件名。
具体的操作实例如下所示:
>>> import os >>> source_file_path = '/root/rocky0429/test.py' >>> os.path.split(source_file_path) ('/root/rocky0429', 'test.py') >>> os.path.splitext(source_file_path) ('/root/rocky0429/test', '.py') >>> os.path.dirname(source_file_path) '/root/rocky0429' >>> os.path.basename(source_file_path) 'test.py'
判断路径是否存在
os.path 模块也提供了一些函数来判断某条路径是否存在,还能判断处在这个条路径的文件的类型,常用的便是 exists,isfile 以及 isdir 函数(is 开头是判断类函数,返回布尔类型结果):
exists:判断某条路径是否存在;
isfile:判断路径是否存在且为一个文件;
isdir:判断路径是否存在且为一个文件夹。
看到这里你可能觉得上面说的都很简单,可恰恰是简单的东西叠加组合就能“变出”很多你想要的结果,如何去使用这里面有大学问。对于 os.path 模块里的函数,如果我们可以充分利用,也能够实现很多有用的功能,下面来看几个例子:
1.获取 /root/rocky0429 目录下的所有文件
>>> import os >>> [file for file in os.listdir(os.path.expanduser('~/rocky0429')) if os.path.isfile(file)] ['test.py', 'c.py', 'b.txt', 'a.txt']
2.获取 /root/rocky0429 目录下的所以列表
>>> import os >>> [table for table in os.listdir(os.path.expanduser('~/rocky0429')) if os.path.isdir(table)] ['data', 'leey']
3.获取 /root/rocky0429 目录下所有目录的绝对地址
>>> import os >>> {table: os.path.realpath(table) for table in os.listdir(os.path.expanduser('~/rocky0429')) if os.path.isdir(table)} {'data': '/root/rocky0429/data', 'leey': '/root/rocky0429/leey'}
转载于:https://www.cnblogs.com/key01/p/10185713.html
解决文件路径的问题的总结相关推荐
- 彻底解决文件路径问题
彻底解决文件路径问题 一个例子 假设下面的目录下有两个文件: D:/code/058.py D:/code/058.txt 058.txt的内容很简单,就一句话: 跟杰哥搞定路径问题 而058.py也 ...
- java war目录_java war包 路径--解决war包中文件路径问题
https://blog.csdn.net/u013409283/article/details/51480948 转自:http://free-chenwei.iteye.com/blog/1507 ...
- windows下编译c语言文件路径,解决JNI在Windows环境下因长路径导致编译失败问题
之前听一个朋友反馈LuaScriptoCore在Windows下编译会报错,今天特意跑到Windows环境下测试了一番,果然是存在问题.得到了下面的编译报错信息: Build command fail ...
- 解决JSP路径问题的方法(jsp文件开头path, basePath作用)
解决JSP路径问题的方法(jsp文件开头path, basePath作用) 参考文章: (1)解决JSP路径问题的方法(jsp文件开头path, basePath作用) (2)https://www. ...
- c#中文件路径出现非法字符怎么办?解决也容易
c#中如果需要生成文件路径,有时会抛出"文件路径中出现非法字符"的异常,这时我们就会找到这个非法的字符串,然后Replace替换掉.其实net类库提供了非法字符的数组,我们直接循环 ...
- python相对路径找不到文件_Python 解决相对路径问题:No such file or directory
如果你取相对路径不是在主文件里,可能就会有相对路径问题:"No such file or directory". 因为 python 的相对路径,相对的都是主文件. 如下目录结构: ...
- python正确读取文件路径的三种解决方法
目录 一.问题需求 二.问题原因 三.解决办法 四.小思 一.问题需求 日常用程序读取文件数据等时,常常会显示一些诸如文件路径不存在等错误信息. 二.问题原因 这类问题,在python中,主要是由于 ...
- 解决:利用IDEA的右上角图标打开jsp文件,在浏览器中打开的是“本机文件路径”,而不是“http路径”问题
解决:利用IDEA的右上角图标打开jsp文件,在浏览器中打开的是"本机文件路径",而不是"http路径"问题 一·问题描述: 二·错误原因: 三·解决方法: 方 ...
- UNIDRV.HLP文件路径,装打印机时,复制过去就解决了
EPSON打印机用的东西,有时候可能在WINDOS上添加打印机时会提示添加不起,可能是却少这个东西的过. 下载之后复制到 这个文件夹C:\WINDOWS\Driver Cache\i386就OK了. ...
最新文章
- Dynatrace DPM数字性能管理方案确保安吉星领跑车联网技术
- flink启动命令参数_[Flink]Flink1.3 指南四 命令行接口-阿里云开发者社区
- msp430流水灯c语言程序,超详细msp430示例程序汇编.doc
- 我的Android进阶之旅------gt;Android中编解码学习笔记
- 那些年踩过的坑(满目疮痍,一身狼狈)
- java 根据银行卡号来获取银行名称
- Googgle guava ImmutableCollections
- Tomcat多层容器的设计
- 明源售楼系统技术解析 销售控制(三)
- 公有继承中 构造函数和析构函数的调用(包含内嵌子对象)
- Network Error - DEV/1/FAN_DIRECTION_NOT_PREFERRED: Fan 1 airflow direction is not preferred on slot
- 价值百万的企业大数据分析报告是如何炼成的?
- matlab中omega是什么意思_小鸡宝宝考考你南柯一梦中的南柯是什么意思?
- 定义一个圆类(Circle)
- java pdf 签名 修改_java – 替换PDF中的签名内容
- 判断两个String类型的是s1,s2是否相等?
- BCM53115交换芯片光口link状态的问题
- 七、享元模式与门面模式详解
- ON1 Photo RAW 2021 15.0.0.9735 快速的 RAW 照片编辑器
- 张飞硬件设计开发笔记(第一部)