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

free_mao@qq.com

python os.path 模块的更多相关文章

  1. 【308】Python os.path 模块常用方法

    参考:Python os.path 模块 参考:python3中,os.path模块下常用的用法总结 01   abspath 返回一个目录的绝对路径. 02   basename 返回一个目录的基名 ...

  2. python os.path模块--转载

    os.path.abspath(path) #返回绝对路径 os.path.basename(path) #返回文件名 os.path.commonprefix(list) #返回list(多个路径) ...

  3. [转载]python os.path模块

    os.path模块主要用于文件的属性获取,在编程中经常用到,以下是该模块的几种常用方法.更多的方法可以去查看官方文档:http://docs.python.org/library/os.path.ht ...

  4. python:os.path模块常用方法

    os.path模块主要用于文件的属性获取,在编程中经常用到,以下是该模块的几种常用方法.更多的方法可以去查看官方文档:http://docs.python.org/library/os.path.ht ...

  5. python os.path模块常用方法详解

    os.path模块主要用于文件的属性获取,在编程中经常用到,以下是该模块的几种常用方法.更多的方法可以去查看官方文档:http://docs.python.org/library/os.path.ht ...

  6. python os.path模块常用方法详解(转)

    转自:https://www.cnblogs.com/wuxie1989/p/5623435.html os.path模块主要用于文件的属性获取,在编程中经常用到,以下是该模块的几种常用方法.更多的方 ...

  7. python os.path模块常用方法详解 ZZ

    os.path模块主要用于文件的属性获取,在编程中经常用到,以下是该模块的几种常用方法.更多的方法可以去查看官方文档:http://docs.python.org/library/os.path.ht ...

  8. [转]Python os.path模块

    os.path模块 原文链接:http://my.oschina.net/cuffica/blog/33494 basename('文件路径')    去掉目录路径,返回fname文件名 import ...

  9. python os.path模块用法详解

    abspath 返回一个目录的绝对路径 Return an absolute path. >>> os.path.abspath("/etc/sysconfig/selin ...

随机推荐

  1. Octopus系列之接下来的任务

    更新默认国家[已实现] 更新每页显示条数的后台控制[已实现] 更新国家和区域的Ajax的关联[已实现] 更新详情页面的 属性选择 脚本提示[已实现 可以做到和兰亭一样的效果了] 增加优惠方案的设置和批 ...

  2. spring 标注

    1.添加支持标注的spring中的jar包: spring-context.jar spring-context-support.jar 2.在xml中配置命名空间和schema <beans ...

  3. 使用Camera进行拍照

    Android应用提供了Camera来控制拍照,使用Camera进行拍照的步骤如下: 1.调用Camera的open()方法打开相机. 2.调用Camera的getParameters()方法获取拍照 ...

  4. GFS: Evolution on Fast-forward

    GFS: Evolution on Fast-forward by Marshall Kirk McKusick, Sean Quinlan | August 7, 2009 A discussion ...

  5. Android统计图表MPAndroidChart.

    Android统计图表MPAndroidChart MPAndroidChart是在Android平台上开源的第三方统计图表库,可以绘制样式复杂.丰富的各种统计图表,如一般常见的折线图.饼状图.柱状图 ...

  6. SQL远程创建数据库

    CREATE PROCEDURE [dbo].[p_CreateDB]   @Des_DB sysname,  @ServerName sysname=N'',  @UserName sysname= ...

  7. COJ 1287 求匹配串在模式串中出现的次数

    这里要在后缀自动机的节点中维护一个从到达当前位置出现的字符串总个数 这里新添加进来的节点的状态出现的次数必然为1 另外包含所能达到这个节点所能到达的状态一定是将它作为父亲的点 那么说明将它作为父亲的点 ...

  8. 戴文的Linux内核专题:07内核配置(3)

    转自Linux中国 OK,我们还继续配置内核.还有更多功能等待着去配置. 下一个问题(Enable ELF core dumps (ELF_CORE))询问的是内核是否可以生成内核转储文件.这会使内核 ...

  9. Problem C 链表

    Description 某部队进行新兵队列训练,将新兵从一开始按顺序依次编号,并排成一行横队,训练的规则如下:从头开始一至二报数,凡报到二的出列,剩下的向小序号方向靠拢,再从头开始进行一至三报数,凡报 ...

  10. hdu 1034 (preprocess optimization, property of division to avoid if, decreasing order process) 分类: hdoj 2015-06-16 13:32 39人阅读 评论(0) 收藏

    IMO, version 1 better than version 2, version 2 better than version 3. make some preprocess to make ...