查看pytho中已自带的模块
显示出已导入的模块
import sys
sys.modules
显示全部模块
help()
modules
查看某模块中支持的功能
eg:
dir('os')
查看某模块的功能的用法
eg:
help(os.mkdir)
自定义模块的导入
在/usr/lib64/python2.6/site-packages/路径下创建自己的模板以.pth后缀(mymodule.pth ),然后在里面写上自己的路径即可
1、模块__future__
至少确保在2.1之前版本的Python可以正常运行一些新的语言特性
2、模块re
Python通过re模块提供对正则表达式的支持。使用re的一般步骤是先使用re.compile()函数,将正则表达式的字符串形式编译为Pattern实例,然后使用Pattern实例处理文本并获得匹配结果(一个Match实例),最后使用Match实例获得信息,进行其他的操作。
举一个简单的例子,在寻找一个字符串中所有的英文字符:
group() 返回RE匹配到的子串 start() 返回匹配开始的位置 end() 返回匹配结束的位置 span() 返回一个元组包含匹配 (开始,结束) 的位置 import re pattern = re.compile(r'[a-zA-Z]') //r 原始字符 result = pattern.findall('as3SiOPdj#@23awe') //findall 返回字符串行表 print result # ['a', 's', 'S', 'i', 'O', 'P', 'd', 'j', 'a', 'w', 'e'] re.match pattern.match(''). 从0开始匹配 re.search 任意位置开始匹配 pattern.search('::: message') >>> m.group() 'message' groups 方法返回一个包含所有小组字符串的元组,从 1 到 所含的小组号。 eg: #!python >>> p = re.compile('(a(b)c)d') >>> m = p.match('abcd') >>> m.group(0) 'abcd' >>> m.group(1) 'abc' >>> m.group(2) 'b' >>> m.groups() // ('abc', 'b') sub(replacement, string[, count = 0]) 提供一个替换值,可以是字符串或一个函数,和一个要被处理的字符串 参数 count 是模式匹配后替换的最大次数;count 必须是非负整数。缺省值是 0 表示替换所有的匹配 eg: >>> p = re.compile( '(blue|white|red)') >>> p.sub( 'colour', 'blue socks and red shoes') 'colour socks and colour shoes' >>> p.sub( 'colour', 'blue socks and red shoes', count=1) 'colour socks and red shoes' 3、模块shlex 在Python中,可以shlex.split()分割字符串,只保留双引号?例如,如果输入的是"hello, world" is what 'i say'那么输出将是["hello, world", "is", "what", "'i", "say'"]。
4.format
格式化(format())输出字符串
print('{0} is {1} years old. '.format(name, age)) #输出参数
5、startswith
Python startswith() 方法用于检查字符串是否是以指定子字符串开头,如果是则返回 True,否则返回 False。如果参数 beg 和 end 指定值,则在指定范围内检查。
语法:
startswith()方法语法:
str.startswith(str,beg=0,end=len(string));
参数:
str -- 检测的字符串。
strbeg -- 可选参数用于设置字符串检测的起始位置。
strend -- 可选参数用于设置字符串检测的结束位置。
6、open
os.open(file,flags[,mode]);
'r' : 以只读模式打开
'r+' : 以读写模式打开, 写的指针刚开始指在文件开头, 因此会覆写文件
'w' : 清空文件, 不能使用
'w+' : 清空文件, 可以使用
'a' : 向一个文件追加内容, 不能使用 .read*()
'a+' : 向一个文件追加内容, 可以使用 .read*()
'rU' : 自动探测行尾符, 如果以这种模式打开一个文件, 该文件对象将获得一个 newlines 属性, 当还未读到任何行尾时,
7、path
os.path模块主要用于文件的属性获取
1).os.path.abspath(path)
返回path规范化的绝对路径。
2).os.path.split(path)
将path分割成目录和文件名二元组返回。
3).os.path.dirname(path)
返回path的目录。其实就是os.path.split(path)的第一个元素。
4).os.path.basename(path)
返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素。
#!/usr/bin/python
import os
path=os.path.realpath(__file__)
dirname=os.path.dirname(path)
basename=os.path.basename(path)
splitext=os.path.splitext(basename)[0]
split=os.path.split(path)
print path
print dirname
print basename
print splitext
print split
==========================
/root/bin/pya.py
/root/bin
pya.py
pya
('/root/bin', 'pya.py')
5).os.path.commonprefix(list)
返回list中,所有path共有的最长的路径。
如:
>>> os.path.commonprefix(['/home/td','/home/td/ff','/home/td/fff'])
'/home/td'
6).os.path.exists(path)
如果path存在,返回True;如果path不存在,返回False。
7).os.path.isabs(path)
如果path是绝对路径,返回True。
8).os.path.isfile(path)
如果path是一个存在的文件,返回True。否则返回False。
9).os.path.isdir(path)
如果path是一个存在的目录,则返回True。否则返回False。
10).os.path.join(path1[, path2[, ...]])
将多个路径组合后返回,第一个绝对路径之前的参数将被忽略。
11).os.path.normcase(path)
在Linux和Mac平台上,该函数会原样返回path,在windows平台上会将路径中所有字符转换为小写,并将所有斜杠转换为饭斜杠。
>>> os.path.normcase('c:/windows\\system32\\')
'c:\\windows\\system32\\'
12).os.path.normpath(path)
规范化路径。
>>> os.path.normpath('c://windows\\System32\\../Temp/')
'c:\\windows\\Temp'
13).os.path.splitdrive(path)
返回(drivername,fpath)元组
>>> os.path.splitdrive('c:\\windows')
('c:', '\\windows')
14).os.path.splitext(path)
分离文件名与扩展名;默认返回(fname,fextension)元组,可做分片操作
>>> os.path.splitext('c:\\csv\\test.csv')
('c:\\csv\\test', '.csv')
15).os.path.getsize(path)
返回path的文件的大小(字节)。
>>> os.path.getsize('c:\\boot.ini')
299L
16.os.path.getatime(path)
返回path所指向的文件或者目录的最后存取时间。
17).os.path.getmtime(path)
返回path所指向的文件或者目录的最后修改时间
18).os.path.sep:路径分隔符 linux下就用这个了’/’
8、isinstance
isinstance(object, classinfo)
isinstance(object, class-or-type-or-tuple)
如果参数object是classinfo的实例,或者object是classinfo类的子类的一个实例, 返回True。如果object不是一个给定类型的的对象, 则返回结果总是False
>>> isinstance(1, int)
True
>>> isinstance(1.0, float)
True
9、json
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。
对简单数据类型的encoding 和 decoding
使用简单的json.dumps方法对简单数据类型进行编码,例如:
import
json
obj
=
[[
1
,
2
,
3
],
123
,
123.123
,
'abc'
,{
'key1'
:(
1
,
2
,
3
),
'key2'
:(
4
,
5
,
6
)}]
encodedjson
=
json.dumps(obj)
print
repr
(obj)
print
encodedjson
输出:
[[1, 2, 3], 123, 123.123, 'abc', {'key2': (4, 5, 6), 'key1': (1, 2, 3)}]
[[1, 2, 3], 123, 123.123, "abc", {"key2": [4, 5, 6], "key1": [1, 2, 3]}]
通过输出的结果可以看出,简单类型通过encode之后跟其原始的repr()输出结果非常相似,但是有些数据类型进行了改变,例如上例中的元组则转换为了列表。在json的编码过程中,会存在从python原始类型向json类型的转化过程,具体的转化对照如下:
json.dumps()方法返回了一个str对象encodedjson,我们接下来在对encodedjson进行decode,得到原始数据,需要使用的json.loads()函数:
decodejson
=
json.loads(encodedjson)
print
type
(decodejson)
print
decodejson[
4
][
'key1'
]
print
decodejson
输出:
[1, 2, 3]
[[1, 2, 3], 123, 123.123, u'abc', {u'key2': [4, 5, 6], u'key1': [1, 2, 3]}]
loads方法返回了原始的对象,但是仍然发生了一些数据类型的转化。比如,上例中‘abc’转化为了unicode类型。从json到python的类型转化对照如下:
json.dumps方法提供了很多好用的参数可供选择,比较常用的有sort_keys(对dict对象进行排序,我们知道默认dict是无序存放的),separators,indent等参数。
排序功能使得存储的数据更加有利于观察,也使得对json输出的对象进行比较,例如:
data1
=
{
'b'
:
789
,
'c'
:
456
,
'a'
:
123
}
data2
=
{
'a'
:
123
,
'b'
:
789
,
'c'
:
456
}
d1
=
json.dumps(data1,sort_keys
=
True
)
d2
=
json.dumps(data2)
d3
=
json.dumps(data2,sort_keys
=
True
)
print
d1
print
d2
print
d3
print
d1
=
=
d2
print
d1
=
=
d3
输出:
{"a": 123, "b": 789, "c": 456}
{"a": 123, "c": 456, "b": 789}
{"a": 123, "b": 789, "c": 456}
False
True
10、yaml
YAML是一种直观的能够被电脑识别的的数据序列化格式,容易被人类阅读,并且容易和脚本语言交互
cat test.yaml
name: Tom Smith
age: 37
spouse:
name: Jane Smith
age: 25
children:
- name: Jimmy Smith
age: 15
- name1: Jenny Smith
age: 12
impopt yaml
f=open('test.yaml',r)
x=yaml.load(f)
print x
{'age': 37, 'spouse': {'age': 25, 'name': 'Jane Smith'}, 'name': 'Tom Smith', 'children': [{'age': 15, 'name': 'Jimmy Smith'}, {'age1': 12, 'name1': 'Jenny Smith'}]}
11、Popen的方法:
Popen.poll()
用于检查子进程是否已经结束。设置并返回returncode属性。
Popen.wait()
等待子进程结束。设置并返回returncode属性。
Popen.communicate(input=None)
与子进程进行交互。向stdin发送数据,或从stdout和stderr中读取数据。可选参数input指定发送到子进程的参数。 Communicate()返回一个元组:(stdoutdata, stderrdata)。注意:如果希望通过进程的stdin向其发送数据,在创建Popen对象的时候,参数stdin必须被设置为PIPE。同样,如 果希望从stdout和stderr获取数据,必须将stdout和stderr设置为PIPE。
例如:
output, error = subprocess.Popen("ls ",
shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE).communicate()
=====================================
[python] view plain copy print?
p = Popen("cp -rf a/* b/", shell=True, stdout=PIPE, stderr=PIPE)
p.wait()
if p.returncode != 0:
print "Error."
return -1