当前位置:编程学习 > 网站相关 >>

Dive in Python学习笔记九

 

找到路径

fullpath.py

-----------------------------------------------------------------

import sys, os

print('sys.argv[0] =', sys.argv[0])

pathname = os.path.dirname(sys.argv[0])

print('path =', pathname)

print('full path =', os.path.abspath(pathname))

运行结果:

sys.argv[0] = E:/Downloads/Python/diveintopythonzh-cn-5.4b/py3/fullpath.py

path = E:/Downloads/Python/diveintopythonzh-cn-5.4b/py3

full path = E:\Downloads\Python\diveintopythonzh-cn-5.4b\py3

说明:

1. sys.argv[0]总是运行脚本的完整路径名

2. os.path.dirname 接受作为字符串传来的文件名并返回路径部分。

3. os.path.abspath 接受的路径名可以是部分的甚至是完全空白,但总能返回完整有效的路径名。

 

os.path.abspath进一步说明

1. 用空字符串调用os.path.abspath 将返回当前的工作路径。

2. 以完整的路径名调用os.path.abspath 则简单地将其直接返回。

3. 传递给os.path.abspath 的路径名和文件名可以不存在。

4. os.path.abspath跨平台。

 

os其他函数

1. os.getcwd() 返回当前的工作路径。

2. os.path.normpath 格式化路径名,不返回完整路径。

 

重识列表过滤

列表过滤还可以通过Python内建filter类完成,它接受两个参数:一个函数和一个列表,返回一个filter对象。作为第一个参数传递给filter 的函数本身应接受一个参数,filter返回的filter对象将会包含被传入列表参数传递给filter 所有可以令函数返回真(true)的元素。如:

>>> def odd(n):

    return n % 2

>>> li = [1,2,3,4,5,9,10,256,-3]

>>> f = filter(odd, li)

>>>type(f)

 

>>> for e in f:

print(e,end=' ')

1 3 5 9 -3

 

重识列表映射

列表映射还可以通过Python内建map类完成,它接受一个函数和一个列表作为参数,并对列表中的每个元素依次调用函数返回一个map对象。

>>> def double(n):

    return n*2

>>> li = [1,2,4,5]

>>> m = map(double, li)

>>> type(m)

 

>>> for e in m:

    print(e, end=' ')   

2 4 8 10

 

动态导入模块

Python内建的函数__import__可以接受一个字符串参数,实现import语句的功能。因此通过它可以实现模块的动态导入。如:

>>> __import__('sys')

 

>>> sys.version

'3.2.2 (default, Sep 4 2011, 09:51:08) [MSC v.1500 32 bit (Intel)]'

 

通过列表映射可以导入模块列表

>>> moduleNames = ['sys', 'os', 're', 'unittest']

>>> moduleNames

['sys', 'os', 're', 'unittest']

>>> map(__import__, moduleNames)

 

>>> sys.version

'3.2.2 (default, Sep 4 2011, 09:51:08) [MSC v.1500 32 bit (Intel)]'

说明:通过map映射,每一个模块名都被用来调用__import__函数,因此都被依次导入。

摘自 蓝猫的专栏

补充:Web开发 , Python ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,