[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)也可以用来实现多列排序,先考虑第一列,一列相同时考虑第二列
posted @ 2013-03-28 20:30  iyjhabc  阅读(241)  评论(0)    收藏  举报