可爱的Python_模块篇
- 格式:pdf
- 大小:805.24 KB
- 文档页数:66
模块篇PCS200 os(.stat;.path) 258PCS201 cmd 264PCS202 chardet 267PCS203 epydoc 270PCS204 ConfigParser 274PCS205 内建函式(enumerate) 277PCS206 thread 280PCS207 threading 282PCS208 dict4ini 285PCS209 fnmatch 288PCS210 pickle 290PCS211 base64 294PCS212 shutil 298PCS213 time 304PCS214 ElementTree 309PCS215 random 312PCS216 socket 315PCS217 Tkinter 319模块篇| 257PCS200 os(.stat;.path)概述os.path是一个与平台无关的文件路径处理模块。
它可以帮助我们解决在程序处理中碰到的一些复杂的路径处理问题,如“//”、“\”、“\\”、“.”等路径分隔符处理不全面的问题,跨平台问题和组合一个可用的跨平台的路径地址问题。
我们用简单的字符串拆分这些路径处理问题是很困难或者无法完成的,但是os.path都替你做好了解决方案,你只须使用它里面的函式就可以了。
应用os.path.splitos.path.split的函式功能:os拆分路径,返回一个tuple,第一个元素是文件所在路径,第二个元素是对应文件名。
如下面的一个小测试:1 import os.path23 for path in [ '/one/two/three',4 '/one/two/three/',5 '/',258 | Python学习作弊条6 '.',7 '']:8 print '"%s" : "%s"' % (path, os.path.split(path))对于一个文件(具有绝对路径或相对路径),使用os.path.split()可以将其拆成对应路径名(不以路径分割符(如'/'结尾))和文件名;对于一个路径,则返回该路径(同样,不以路径分割符,(如'/'结尾)),而对应的文件名为空。
这里比较奇特的是对于当前文件夹('.'),os.path.split()把它看作是文件名。
~$ python pcs-200-1.py"/one/two/three" : "('/one/two', 'three')""/one/two/three/" : "('/one/two/three', '')""/" : "('/', '')""." : "('', '.')""" : "('', '')"os.path.basenameos.path.basename的函式功能:只获取某路径对应的文件名。
修改上面的例子:1 import os.path23 for path in [ '/one/two/three',4 '/one/two/three/',5 '/',6 '.',7 '']:8 print '"%s" : "%s"' % (path, os.path.basename(path))如果这里的函式参数只是一个路径,不是文件名,则返回对应的文件名为空。
同样对于'.'也比较奇怪。
~$ python pcs-200-2.py"/one/two/three" : "three""/one/two/three/" : """/" : """." : ".""" : ""模块篇| 259os.path.dirnameos.path.dirname的函式功能:只获取某路径对应的路径,不含文件名。
再修改之前的例子:1 import os.path23 for path in [ '/one/two/three',4 '/one/two/three/',5 '/',6 '.',7 '']:8 print '"%s" : "%s"' % (path, os.path.dirname(path))同样,返回的路径名是不以路径分割符(如'/')结尾的。
~$ python pcs-200-3.py"/one/two/three" : "/one/two""/one/two/three/" : "/one/two/three""/" : "/""." : """" : ""os.path.splitextos.path.splitext的函式功能:将路径、文件名、扩展名分开,并以一个tuple的形式返回。
1 import os.path23 for path in [ 'filename.txt', 'filename', '/path/to/filename.txt', '/', '' ]:4 print '"%s" :' % path, os.path.splitext(path)可以看到os.path.splittext只是很单纯地将文件名和扩展名分开了,如下所示。
~$ python pcs-200-4.py"filename.txt" : ('filename', '.txt')"filename" : ('filename', '')"/path/to/filename.txt" : ('/path/to/filename', '.txt')"/" : ('/', '')"" : ('', '')260 | Python学习作弊条monprefixmonprefix的函式功能:看一个比较cool的功能就是要在一组路径中,找到一个共同的前缀,比如:1 import os.path23 paths = ['/one/two/three/four',4 '/one/two/threefold',5 '/one/two/three/',6 ]7 print paths8 print monprefix(paths)~$ python pcs-200-5.py['/one/two/three/four', '/one/two/threefold', '/one/two/three/']/one/two/threeos.path.joinos.path.join的函式功能:使用os.path.join组合一些零散的字符串,生成一个安全的路径表示,如下所示。
1 import os.path23 for parts in [ ('one', 'two', 'three'),4 ('/', 'one', 'two', 'three'),5 ('/one', '/two', '/three'),6 ]:7 print parts, ':', os.path.join(*parts)也就是将一系列短路径拼合成有效的长路径。
~$ python pcs-200-6.py('one', 'two', 'three') : one/two/three('/', 'one', 'two', 'three') : /one/two/three('/one', '/two', '/three') : /threeos.path.expanduseros.path.expanduser的函式功能:可以利用os.path.expanduser寻找用户的home目录,如下模块篇| 261所示。
1 import os.path23 for user in [ '', 'root', 'mysql' ]:4 lookup = '~' + user5 print lookup, ':', os.path.expanduser(lookup)'~user'是表示某个用户的home目录,'~'表示当前用户的home目录。
~$ python pcs-200-7.py~ : /home/shengyan~root : /root~mysql : /var/lib/mysqlos.path.expandvarsos.path.expandvars的函式功能:使用os.path.expandvars来读取路径中系统环境变量的值。