您的位置:首页 > 其它

os.path —— 平台独立的文件名管理 (解析路径篇)

2012-08-28 13:17 483 查看
1. os 中的一些变量

os.sep     ———— 路径各部分之间的分隔符(例如,“/”或者“\”)
os.extsep  ———— 文件名和文件扩展名之间的分隔符(例如,“.”)
os.pardir  ———— 路径中表示目录树上一级的部分(例如,“...”)
os.curdir  ———— 路径中表示当前目录的部分(例如,“.”)


示例代码:

import os

print os.sep
print os.extsep
print os.pardir
print os.curdir


运行结果:
\
.
..
.


2. split()函数将路径分为两个单独的部分,并返回包含这些结果的一个元组,这个元组的第二个元素是路径的最后一个部分,第一个元素为剩余的前面部分。

示例代码:

import os.path

for path in [ '/one/two/three',
'/one/two/three/',
'/',
'.',
'']:
print '%15s : %s' %(path, os.path.split(path))


运行结果:
/one/two/three : ('/one/two', 'three')
/one/two/three/ : ('/one/two/three', '')
/ : ('/', '')
. : ('', '.')
: ('', '')


3. basename()函数返回的值等价于split()返回元组的第二个元素

示例代码:

import os.path

for path in [ '/one/two/three',
'/one/two/three/',
'/',
'.',
'']:
print '%15s : %s' %(path, os.path.basename(path))

运行结果:

/one/two/three : three
/one/two/three/ :
/ :
. : .
:


4. dirname()函数返回分解路径得到的第一部分
示例代码:

import os.path

for path in [ '/one/two/three',
'/one/two/three/',
'/',
'.',
'']:
print '%15s : %s' %(path, os.path.dirname(path))


运行结果:
/one/two/three : /one/two
/one/two/three/ : /one/two/three
/ : /
. :
:


所以将 dirname()和 basename() 的结果结合,可以得到原来的路径.

5. splitext()函数和split()类似,不过他是根据扩展名分隔符而不是目录分隔符来分解路径

示例代码:

import os.path

for path in [ 'filename.txt',
'filename',
'/path/to/filename.txt',
'/',
''
'my-archive.tar.gz',
'no-extension.',]:
print '%21s : %s' %(path, os.path.splitext(path))


运行结果:
filename.txt : ('filename', '.txt')
filename : ('filename', '')
/path/to/filename.txt : ('/path/to/filename', '.txt')
/ : ('/', '')
my-archive.tar.gz : ('my-archive.tar', '.gz')
no-extension. : ('no-extension', '.')


6. commonprefix()取一个路径列表作为参数,将返回一个字符串,表示所有路径中都出现的公共前缀。

这个值可能表示一个根本不存在的路径,而且不考虑路径分隔符,所以这个前缀可能并不落在一个分隔符边界上。

示例代码:

import os.path

paths = [ '/one/two/three/four',
'/one/two/threeflod',
'/one/two/three/']

for path in paths:
print 'PATH:', path

print 'PREFIX :', os.path.commonprefix(paths)


运行结果:

PATH: /one/two/three/four
PATH: /one/two/threeflod
PATH: /one/two/three/
PREFIX : /one/two/three
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: