python os.path 模块
os.path模块用法:
1, os.path.basename()
>>> os.path.basename('/share/Public/cmiao')
'cmiao'
basename()函数并不会去判断这个路径是否存在,它只是简单的将最后一个/后面的作为文件名返回。至于是不是它不管
>>> os.path.basename('/share/Public/cmiao/')
''
由于最后一个/没有东西,他就认为这个目录路径,没有文件名。所以返回了空字符串
2, os.path.dirname()
和basename()一样,并不会去判断此路径是否存在。只是单纯的返回最后一个/前面的内容
>>> os.path.dirname('/share/Public/cmiao/')
'/share/Public/cmiao'
它认为这个是目录
>>> os.path.dirname('/share/Public/cmiao')
'/share/Public'
由于cmiao后面没有加反斜杠,所以认为cmiao是个文件名。
3, os.path.join()
将目录和文件名合并。并不去检查是否存在,只是单纯的合并
>>> os.path.join('dfjds','sfd')
'dfjds/sfd'
两个都没有/, 默认将前一个作为目录名,后一个作为文件名。
>>> os.path.join('/dfjds','sfd')
'/dfjds/sfd'
>>> os.path.join('/dfjds/','sfd/')
'/dfjds/sfd/'
两个都有/ , 那就都是目录
>>> os.path.join('/dfjds/','sfd/','werw')
'/dfjds/sfd/werw'
>>> os.path.join('/dfjds/','sfd/','sfd/sdf.fa')
'/dfjds/sfd/sfd/sdf.fa'
就算目录有重复,他也不会去掉重复。。。
4, os.path.split()
将一个路径分开成文件名和目录名,并不会检查这个目录是否真的存在,最终以元组的形式返回
>>> os.path.split('sfdfa/gert')
('sfdfa', 'gert')
以最后一个/为分界线,/右边为文件名,左边为目录名, 返回的目录名最右边是没有/的
>>> os.path.split('sfdfa/gert/')
('sfdfa/gert', '')
最后一个/后面没有内容, 所以文件名为空字符''
>>> os.path.split('/sfdfa/gert/dfs.fa')
('/sfdfa/gert', 'dfs.fa')
其实split()返回的第一个元素就是os.path.dirname(), 第二个元素就是os.path.basename()
5,os.path.abspath()
返回你所给路径的绝度路径。
>>> os.path.abspath('sjfdl/sdfj.fa')
'/share/Public/cmiao/MyScripts/call_snp_pipeline/sjfdl/sdfj.fa'
这个很有意思, 如果你第一个目录前面没有/, 他就认为第一个目录是在当前目录下,就会补全当前目录的绝对路径。
>>> os.path.abspath('/sjfdl/sdfj.fa')
'/sjfdl/sdfj.fa'
如果第一个目录名前面有/ 就认为是从根目录开始的绝度路径
>>> os.path.abspath('./sjfdl/sdfj.fa')
'/share/Public/cmiao/MyScripts/call_snp_pipeline/sjfdl/sdfj.fa'
最前面有./ 和什么都没有是一样的
>>> os.path.abspath('./sjfdl/sdfj')
'/share/Public/cmiao/MyScripts/call_snp_pipeline/sjfdl/sdfj'
>>> os.path.abspath('./sjfdl/sdfj/')
'/share/Public/cmiao/MyScripts/call_snp_pipeline/sjfdl/sdfj'
最后一个有没有/是一样的
>>> os.path.abspath('../sjfdl/sdfj/')
'/share/Public/cmiao/MyScripts/sjfdl/sdfj'
..是上个目录,会返回上个目录的绝对路径。
也就是说,它自己算的那部分绝度路径是正确的,他不管你给的路径正确不正确
6,os.path.isabs()
判断指定的路径是否为绝对路径
>>> os.path.isabs('sdf/sfad.fa')
False
>>> os.path.isabs('./sdf/')
False
>>> os.path.isabs('/sdf/sfad.fa')
True
>>> os.path.isabs('/sdf/')
True
>>> os.path.isabs('sdf/')
False
第一个目录名前没有/, 目录中有. 或者.. 都会返回False
7, os.path.exists()
判断路径是否存在
>>> os.path.exists('./sdf/')
False
当前目录下没有sdf这个目录,所以返回False
>>> os.path.exists('./')
True
当前目录当然存在
>>> os.path.exists('share/')
False
share前面没有/, 认为是当前目录下,当前目录下没有share, 所以返回False
>>> os.path.exists('/share/')
True
根目录下有/share目录, 所以返回True
8, os.path.isfile()
判断路径是否存在, 并且是否是个文件
>>> os.path.isfile('/share/Public/cmiao/bwa-0.7.8.tar.bz2')
True
最后一个文件名确实在这个目录里, 返回True
>>> os.path.isfile('/share/Public/cmiao')
False
最后一个cmiao后虽然没有/, 但是isfile()会判断是文件还是目录。cmiao是目录,所以返回False。 如果用basename()会将cmiao返回。
9, os.path.isdir()
判断路径是否存在,并且是个目录。
by freemao
FAFU
python os.path 模块的更多相关文章
- 【308】Python os.path 模块常用方法
参考:Python os.path 模块 参考:python3中,os.path模块下常用的用法总结 01 abspath 返回一个目录的绝对路径. 02 basename 返回一个目录的基名 ...
- python os.path模块--转载
os.path.abspath(path) #返回绝对路径 os.path.basename(path) #返回文件名 os.path.commonprefix(list) #返回list(多个路径) ...
- [转载]python os.path模块
os.path模块主要用于文件的属性获取,在编程中经常用到,以下是该模块的几种常用方法.更多的方法可以去查看官方文档:http://docs.python.org/library/os.path.ht ...
- python:os.path模块常用方法
os.path模块主要用于文件的属性获取,在编程中经常用到,以下是该模块的几种常用方法.更多的方法可以去查看官方文档:http://docs.python.org/library/os.path.ht ...
- python os.path模块常用方法详解
os.path模块主要用于文件的属性获取,在编程中经常用到,以下是该模块的几种常用方法.更多的方法可以去查看官方文档:http://docs.python.org/library/os.path.ht ...
- python os.path模块常用方法详解(转)
转自:https://www.cnblogs.com/wuxie1989/p/5623435.html os.path模块主要用于文件的属性获取,在编程中经常用到,以下是该模块的几种常用方法.更多的方 ...
- python os.path模块常用方法详解 ZZ
os.path模块主要用于文件的属性获取,在编程中经常用到,以下是该模块的几种常用方法.更多的方法可以去查看官方文档:http://docs.python.org/library/os.path.ht ...
- [转]Python os.path模块
os.path模块 原文链接:http://my.oschina.net/cuffica/blog/33494 basename('文件路径') 去掉目录路径,返回fname文件名 import ...
- python os.path模块用法详解
abspath 返回一个目录的绝对路径 Return an absolute path. >>> os.path.abspath("/etc/sysconfig/selin ...
随机推荐
- C++ STL pair
没有找到priority_queue里存放pair不用typedef的方法...大概第一次觉得这个有用吧... 优先队列里和sort函数对pair 的默认排序是first从小到大,second从小到大 ...
- 有关C#中使用if else和try catch的问题及效率问题
本来if esle 是流程控制 try catch是异常处理,本身其实是没有可比性的,但是开发过程中有的人很容易混用,而且两者有的时候效果似乎一样,所以我还是用了个简单的测试来简单的比较下. 不多说, ...
- ASP.net 验证码(C#) MVC
ASP.net 验证码(C#) MVC http://blog.163.com/xu_shuhao/blog/static/5257748720101022697309/ 网站添加验证码,主要为防止机 ...
- AJAX初步
1.什么是AJAX 客户端与服务器,可以在[不必刷新整个浏览器]的情况下,与服务器进行异步通讯的技术,即,AJAX是一个[局部刷新]的[异步]通讯技术: AJAX不是全新的语言,是2005年Googl ...
- Hibernate中的一对一映射
1.需求 用户和身份证是一一对应的关系. 有两种对应方式: 用户id作为身份证表的外键,身份证号作为主键: 用户id作为身份证表的主键: 2.实体Bean设计 User: public class U ...
- JSP中的EL
1.为什么要使用EL 使用<jsp:getProperty>,只能访问bean属性的性质,不能访问嵌套性质.例如一个含有Dog对象的Person对象. 当然使用脚本可以工作,但是如果不想使 ...
- Eclipse中一些快捷键
用到哪里更新到哪里~~~ 1,代码自动对齐 ctrl+shift+f 2,自动填充相关的包 alt+/ 注意选择好需要的包 3,注释某几行代码 选定后ctrl+/ 4,设置自动补全 最简单的修改方 ...
- [TOP10]十大渗透测试演练系统
本文总结了目前网络上比较流行的渗透测试演练系统,这些系统里面都提供了一些实际的安全漏洞,排名不分先后,各位安全测试人员可以亲身实践如何利用这个漏洞,同时也可以学习到漏洞的相关知识. DVWA (Dam ...
- 修复win8引导
格式化那个350MB的分区(Win8安装盘启动之后挂载在c:之后,用Win8的安装U盘,进去修复模式,然后进入高级选项的命令行提示符模式.接着,转到安装现有Win8的分区(Win8安装盘启动之后挂载在 ...
- Note_Master-Detail Application(iOS template)_06_ YJYDetailViewController.h
// YJYDetailViewController.h #import <UIKit/UIKit.h> @interface YJYDetailViewController : UIV ...