[python]python学习笔记
improt os #os模块提供操作文件盒目录的函数
os.getcwd() #获取脚本运行的目录
os.listdir(os.getcwd()) #取得目录中的内容
['DLLs', 'Doc', 'include', 'Lib', 'libs', 'LICENSE.txt', 'mymodule', 'mytest.pyc', 'NEWS.txt', 'python.exe', 'pythonw.exe', 'README.txt', 'tcl ']
>>> path='g:\\mydir' >>> os.mkdir(path) #创建系统目录
>>> os.rmdir(path) #删除目录
>>> os.path.isdir(path) True #检查是否存在目录
os.path.isfile('g:\\wifi code.txt') True #检查是否文件
文件是可迭代的
for line in f:
print line
i am line one
hi i am line two
line three how are you
line four i am fine thank you
dir(module name)查看模块包含信息
help(module name)查看模块详细信息 help(模块名.函数)查看函数详细信息
模块名.__doc__ 模块的简介
fi=open('g:/abc.txt','w') 'w'代表写 R代表读
>>> fi.write('this is a new line\n')
>>> fi.close() #文件CLOSE了以后,新写的字符串才能生效
fi.read(3)#读取文件的前三个字符,再次读取会从第4个字符开始fi.readline()一行一行读
list=fi.readlines()把每一行作为LIST的一个元素,这样方便修改其中的行
fi.writelines(list)把修改好的写回文件中
当修改了自己写的模块后,需要reload(模块名) 才能生效
os.path模块 跨平台
os.path.sep代表路径分隔符,windows下\ LINUX下/
if 判断式:
可以把函数名(其实就是一个指针)存放在列表中,然后在列表中加括号调用。
字典:大括号
语句块
elif 判断式2:
语句块
elif 判断式3:
语句块
else:
语句块
thing = 'animal'
animal = 'ca2t'
if thing=='animal':
if animal=='cat':
print 'this is a cat'
else:
print 'this is not a cat'
else:
print 'this is not a animal' #缩进决定语句块
is语句:one=two=[1,2,3] >>> one is two;只有来源于同一OBJECT的才返回TRUE,就算元素相同,分别赋值都返回FALSE
in语句:查看某个元素是否在序列之中;>>> pizza='pizzahut' >>> 'pi' in pizza ; True
for语句:gl=['meat','egg','milk','fork']
>>> for food in gl:
print 'i love '+food
i love meat
i love egg
i love milk
i love fork
定义函数:def hey(x):
return 'hey'+`x` >>> hey(1) ; 'hey1'
不定数量参数:def list(*food):
print food >>> list('a') ;('a',) >>> list('a','b','c') ; ('a', 'b', 'c')
def dic(*name,**num): #**代表把参数转换成字典,输入的格式是 KEY=VALUE
print name
print num
>>> dic('tom','jack',jack=21,tom=38)
('tom', 'jack')
{'jack': 21, 'tom': 38}
name=('mary','kary')
>>> num={'mary':34,'kary':35}
>>> dic(*name,**num) #用元组和字典直接作为函数参数,前面必须加*。如果函数有三个参数,可直接用一个3位的元组代替
class me: #创建类
eye='black'
age=23
def beat(self): #成员函数第一个参数必须为SELF
print 'i beat it'
>>> yjh=me()
>>> print yjh.eye,yjh.age
black 23
>>> yjh.beat()
i beat it
class classMe:
#name
def printMe(self,name):
self.name=name #可以在函数中直接添加成员变量,不需要提前声明
print "hello %s !" % self.name
>>> yjh=classMe()
>>> yjh.printMe('yjh') #因此必须先使用函数,才可以使用成员变量,否则会出错。也可以在类中先声明成员变量并赋初值。
hello yjh !
>>> yjh.name
'yjh'
>>> class parent:
name='yws'
age=50
loca='fs'
>>> class son(parent): #继承格式
name='yjh'
age=23
>>> yws=parent()
>>> yjh=son()
>>> print yws.name,yws.age,yws.loca
yws 50 fs
>>> print yjh.name,yjh.age,yjh.loca
yjh 23 fs #继承父类的变量,可以覆盖,如loca
class sonson(mon,dad): #继承多个父类,如果父类中有同名变量,子类采用继承括号前面的父类的变量,此处为MON
def __init__(self): #构造函数
将PY文件保存在PYTHON文件夹下,然后import 文件名(不要.PY)就可以调用文件中的函数和类
当PY文件改变了,需要用reload(模块名)更新模块
yield用法:
>>> def abc():
print 'hi'
yield 'hi#'
print 'ni hao'
yield 'ni hao #'
print 'zui hou'
yield 'zuihou'
>>> for i in abc():
print i
hi
hi#
ni hao
ni hao #
zui hou
zuihou
>>> for i in abc():
pass
hi
ni hao
zui hou
CMDs={'h':hello,'f':fuck}
CMDs['h']() 输出HELLO
表达式:
2**3=2的3次方
name={'yjh':'a','xwm':'s'}
del name['xwm']
.clear()清除所有元素 .copy()返回一个副本 .has_key('key')有的回TRUE
fromkeys(list,value)创建同一初值的字典
dict(zip(list1,list2))创建不同初值的字典
函数:
import 模块名 引入模块
例 import math math.floor(18.7)
可将函数赋予变量 如 abc=math.floor; abc(18.7)
range()
for i in range(10)
eval()
执行字符串表达式:eval('3+4')
exec()
执行字符串代码: exec('print 0')
字符串:
''' XXXX
dfsdf''' #三点可以跨行定义字符串
num=18 转换成字符串 str(num) ='18' `num` 同样作用 `为ESC下面键
sorted('sdfasdf')返回一个排序后的列表
bucky='hi %s,how\'s your %s '>>> varb=('tom','body')>>> print bucky % varb ;hi tom,how's your body
.find('') 返回找到的第一个字母的INDEX 必须有完全吻合的元素才会给出搜索结果否则给-1 'abc' .find('a') -1
sequence=['a','b','c','d']>>> glue='+'>>> glue.join(sequence) ; 'a+b+c+d'
.lower()转所有大写字母为小写 .upper()转为大写 。 .replace('想换词','新词')如何查找不到想换词将不做操作
'分隔符'.join(列表)可用分隔符连接列表
replace(替换前,替换后)
分割字符串:
直接分割:list('abc') 标志分割:line.split(':')
input(表达式) raw_input(转换成字符串) 例:a=input(1+1);a=2; a=raw_input(1+1);a='1+1'
import string
string.digits数字 string.letters大小写字母
序列:中括号
family = [‘dad’,'mom','son','sis','dog'] ; family[0]为'dad' ; family[1-]为'dog' [-0]=[0]
len()求长度 man()求最大值 min() list('xxx')把字符串转为LIST del family[5]删除第六个元素
序列可相加 入 abc=['cat'] abc+family= [‘dad’,'mom','son','sis','dog','cat']
family[1:1]=‘sis’代表从1开始还没到1,就是1之间插入‘sis
family[1:3]=[] or del family[1:3]删除1 2两个元素
family.append()在最后加一个元素 family.extend()在最后加一个包含多个元素的序列
.index()求某元素的index .insert(index,ele) 在某位置i插入一元素 .pop(index) 删除某位置元素并返回该元素
.remove(ele) 删除第一次的对应元素 .reverse()逆序该序列 .sort()升序排序
元组:小括号 不能改变元组不能新增或删除元素
bucky=(12,34,5,4,3)
分片:
example=[0,1,2,3,4,5,6,7,8,9]; example[:]全体 ;example[4:]从4到最后 ; example[0:9:2]0~9每间隔2取一个 ;example[9:0:-2]逆序
文件操作:
使用glob模块迭代多个文件 for for fname in glob.glob('*.txt'): fs=open(fname,'r')
列表:
len(列表) 计算列表元素个数
用index(目标) 搜索元素,但如果元素不存在则会抛出异常。
初始化列表,确定所有元素和长度 1,ab=[0]*5 初值为0长度为5 2,ac=[i for i in range(1,5)]
te='abc' >>> for i,key in enumerate(te): i从0开始迭代
list.sort(reverse=True)降序排序字典:
operator.itemgetter获取字典或元组的第i个元素,如
sorted(a.iteritems(), key=itemgetter(0), reverse=True) 以元组中第0个元素为key
sorted(a.iteritems(), key=itemgetter(1,0), reverse=True)也可以用来实现多列排序,先考虑第一列,一列相同时考虑第二列

浙公网安备 33010602011771号