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 ,