分类: Python/Ruby
2009-09-01 07:13:54
查找路径的设置:
>>> import sys
>>>
sys.path.append('c:/python')
unix只能以绝对路径或者形式添加:sys.path.expanduser('~/python').
导入只会生效一次。
要强制重新加载:
>>>
hello = reload(hello)
Hello,
world!
3.0不会再有reload功能,可以使用exec,建议最好不要涉及到reload类似的功能。
查看系统路径:
>>>
import sys, pprint
>>>
pprint.pprint(sys.path)
pprint可以很好地处理较大的数据。
模块一般放在site-packages中。
可以修改环境变量:PYTHONPATH.--这个在我的windows好像没有找到,估计IDE有自己的设置方法。也可以在.pth文中设置的
模块以.py结尾,windows下还可以.pyw。
多个模块可以组合成包,它是包含__init__.py的目录。
>>>
import copy
查看:dir(copy
>>>
[n for n in dir(copy) if not n.startswith('_')]
['Error',
'PyStringMap', 'copy', 'deepcopy', 'dispatch_table', 'error', 'name', 't']
可以调用的查看方式:
copy.__all__
获取帮助:help(copy.copy),跟如下的效果是一样的。
查看源文件的位置:>>> print copy.__file__
C:\Python26\lib\copy.pyc
一些python内置的库,比如sys;一些用c语言书写的库,是不能这样查看的。
sys 模块提供了许多函数和变量来处理 Python 运行时环境的不同部分. 重要的函数有:argv,exit([arg]),modules,path,platform,stdin,stdout,stderr等。
os 模块:这个模块中的大部分函数通过对应平台相关模块实现, 比如 posix 和 nt. os 模块会在第一次导入的时候自动加载合适的执行模块.重要的函数有environ,system,sep,pathsep,linesep,urandom(n)。
environ用于修改环境变量;
system执行外部程序,其他的类似命令有execv,会退出python,popen打开类似于文件的连接,不过subprocess模块集合了他们所有的功能;
os.sep用于路径中的分隔符,unix中为斜杠,windows中是2个反斜杠。
os.pathsep则为path路径的分隔符;
os.linesep为行分隔符;
urandom:返回加密的随机数
比如打开火狐:unix中,os.system('/usr/bin/firefox');windows中os.system(r'c:\"Program Files"\"Mozilla
Firefox"\firefox.exe')。加引号是为了防止不解释空格。也可以使用windows特有的函数:os.startfile(r'c:\Program
Files\Mozilla Firefox\firefox.exe')。windows程序与os.system (or os.startfile)同时运行,UNIX中python会等待os.system完成。其实打开网页还有更好的方法:
import webbrowser
webbrowser.open('')
fileinput
模块允许你循环一个或多个文本文件的内容。重要的函数有:input([files[, inplace[,
backup]]),filename(),lineno()。filelineno(),isfirstline(),isstdin(),nextfile(),close()
注意fileinput.lineno是多个文件累积的计数。文本文件的替换操作很简单. 只需要把 inplace 关键字参数设置为 1 , 传递给 input 函数, 该模块会帮你做好一切.
heaps(堆),对应的模块为heapq。函数有6个:heappush(heap, x),heappop(heap),heapify(heap),heapreplace(heap, x),nlargest(n,
iter),nsmallest(n, iter)。
>>>
from heapq import *
>>>
from random import shuffle
>>>
data = range(10)
>>>
shuffle(data)
>>>
heap = []
>>>
for n in data:
...
heappush(heap, n)
>>>
heap
[0, 1,
3, 6, 2, 8, 4, 7, 9, 5]
>>>
heappush(heap, 0.5)
>>>
heap
[0, 0.5,
3, 6, 1, 8, 4, 7, 9, 5, 2]
i总大于i // 2,小于2*i and 2*i + 1).
>>> heap
[0.5, 1,
5, 3, 2, 7, 9, 8, 4, 6]
>>>
heapreplace(heap, 10)
0.5
>>>
heap
[1, 2,
5, 3, 6, 7, 9, 8, 4, 10]
双端队列和其他集合:
>>>
from collections import deque
>>>
q = deque(range(5))
>>>
q.append(5)
>>>
q.appendleft(6)
>>>
q
deque([6,
0, 1, 2, 3, 4, 5])
>>>
q.pop()
5
>>>
q.popleft()
6
>>>
q.rotate(3)
>>>
q
deque([2,
3, 4, 0, 1])
>>>
q.rotate(-1)
>>>
q
deque([3,
4, 0, 1, 2])
另外还有extend和extend方法
其他模块待下次介绍。
sys 模块提供了许多函数和变量来处理 Python 运行时环境的不同部分. 重要的函数有:argv,exit([arg]),modules,path,platform,stdin,stdout,stderr等。
os 模块:这个模块中的大部分函数通过对应平台相关模块实现, 比如 posix 和 nt. os 模块会在第一次导入的时候自动加载合适的执行模块.重要的函数有environ,system,sep,pathsep,linesep,urandom(n)。
environ用于修改环境变量;
system执行外部程序,其他的类似命令有execv,会退出python,popen打开类似于文件的连接,不过subprocess模块集合了他们所有的功能;
os.sep用于路径中的分隔符,unix中为斜杠,windows中是2个反斜杠。
os.pathsep则为path路径的分隔符;
os.linesep为行分隔符;
urandom:返回加密的随机数
比如打开火狐:unix中,os.system('/usr/bin/firefox');windows中os.system(r'c:\"Program Files"\"Mozilla
Firefox"\firefox.exe')。加引号是为了防止不解释空格。也可以使用windows特有的函数:os.startfile(r'c:\Program
Files\Mozilla Firefox\firefox.exe')。windows程序与os.system (or os.startfile)同时运行,UNIX中python会等待os.system完成。其实打开网页还有更好的方法:
import webbrowser
webbrowser.open('')
fileinput
模块允许你循环一个或多个文本文件的内容。重要的函数有:input([files[, inplace[,
backup]]),filename(),lineno()。filelineno(),isfirstline(),isstdin(),nextfile(),close()
注意fileinput.lineno是多个文件累积的计数。文本文件的替换操作很简单. 只需要把 inplace 关键字参数设置为 1 , 传递给 input 函数, 该模块会帮你做好一切.
heaps(堆),对应的模块为heapq。函数有6个:heappush(heap, x),heappop(heap),heapify(heap),heapreplace(heap, x),nlargest(n,
iter),nsmallest(n, iter)。
>>>
from heapq import *
>>>
from random import shuffle
>>>
data = range(10)
>>>
shuffle(data)
>>>
heap = []
>>>
for n in data:
...
heappush(heap, n)
>>>
heap
[0, 1,
3, 6, 2, 8, 4, 7, 9, 5]
>>>
heappush(heap, 0.5)
>>>
heap
[0, 0.5,
3, 6, 1, 8, 4, 7, 9, 5, 2]
i总大于i // 2,小于2*i and 2*i + 1).
>>> heap
[0.5, 1,
5, 3, 2, 7, 9, 8, 4, 6]
>>>
heapreplace(heap, 10)
0.5
>>>
heap
[1, 2,
5, 3, 6, 7, 9, 8, 4, 10]
双端队列和其他集合:
>>>
from collections import deque
>>>
q = deque(range(5))
>>>
q.append(5)
>>>
q.appendleft(6)
>>>
q
deque([6,
0, 1, 2, 3, 4, 5])
>>>
q.pop()
5
>>>
q.popleft()
6
>>>
q.rotate(3)
>>>
q
deque([2,
3, 4, 0, 1])
>>>
q.rotate(-1)
>>>
q
deque([3,
4, 0, 1, 2])
另外还有extend和extend方法