with open as
#有一些任务,可能事先需要设置,事后做清理工作,譬如打开、关闭文件,不用with语句时写成:
file = open("/tmp/foo.txt")
data = file.read()
file.close()
#或者可以加入对异常的处理:
file = open("/tmp/foo.txt")
try:
data = file.read()
finally:
file.close()
#但是显冗长,用with语句可以很好得解决
with open("D:/coding/xxx.csv","r") as f:
df=pd.read_csv(f)
try语句
a=10
b=0
c=a/b
print "done"
#如果不用try,到计算c步时便会报错中断,导致后一条print语句未执行;
#我们把可能发生错误的语句放在try模块里,用except来处理异常。except可以处理一个专门的异常,也可以处理一组圆括号中的异常,如果except后没有指定异常,则默认处理所有的异常。每一个try,都必须至少有一个except
try:
c=a/b
print c
except ZeroDivisionError,e:#e是这个错误的实例名,错误类型可以是某个,也可以是几个(X,X),e
print e.message
#else语句可加可不加,表示若没有出现该错误则操作
else:
print "no error"
print "done"
#无论异常是否发生,在程序结束前,finally中的语句都会被执行
try:
print a/b
finally:
print "always excute"
open()
f=open('/tmp/hello','w')
#open(路径+文件名,读写模式)
#读写模式:r只读,r+读写,w新建(会覆盖原有文件),a追加,b二进制文件.常用模式如:rb,wb,r+b等
"""
rU 或 Ua 以读方式打开, 同时提供通用换行符支持 (PEP 278)
w 以写方式打开,
a 以追加模式打开 (从 EOF 开始, 必要时创建新文件)
r+ 以读写模式打开
w+ 以读写模式打开 (参见 w )
a+ 以读写模式打开 (参见 a )
rb 以二进制读模式打开
wb 以二进制写模式打开 (参见 w )
ab 以二进制追加模式打开 (参见 a )
rb+ 以二进制读写模式打开 (参见 r+ )
wb+ 以二进制读写模式打开 (参见 w+ )
ab+ 以二进制读写模式打开 (参见 a+ )
第二个参数默认是'r'只读的;
"""
image
合成 Image.blend(i1,i2,a)/Image.composite(i1,i2,mask)
缩略图 thumbnail(size,filter=None)
Modifies in-place,Preserves aspect ratio
myImage.thumbnail ((128,128),Image.ANTIALIAS)```
剪切 crop(bbox)
bounds = (100, 100, 400, 400)
cutoutIm = myImage.crop (bounds)“`
粘贴 paste(i2,where,mask=None)/paste(color,box=None,mask=None)
旋转 rotate(theta)
rotated around its center
翻转旋转 transpose(method)
ROTATE_90/180/270(clockwise), FLIP_TOP_BOTTOM(horizontal), FLIP_RIGHT_LEFT(vertical)
fixedIm = myImage.transpose (ROTATE_90)
numpy
x = np.eye(3).astype(int) #生成一个int型的3阶对角阵/默认是float64;
sorted
a=sorted(a, key=lambda x:x[1]) #以元素第2位排序;
List extend()
#在列表后面添上另一个list的元素;
aList = [123, 'xyz', 'zara', 'abc', 123]
bList = [2009, 'manni']
aList.extend(bList)
print ("Extended List : ",aList)
#Extended List : [123, 'xyz', 'zara', 'abc', 123, 2009, 'manni']
csc稀疏矩阵
#造一个全0的稀疏阵;
csc_matrix((M, N), [dtype])
#造一个非零数的行列数据下标一一对应的;a[row_ind[k], col_ind[k]] = data[k]
csc_matrix((data, (row_ind, col_ind)), [shape=(M, N)])
#造一个非零数的行列数据下标,列标用的写法是每个列标的个数;比如[0,2,3,6]就是[0,0,1,2,2,2]
csc_matrix((data, indices, indptr), [shape=(M, N)])
sys()、模块
'''sys模块有一个argv变量,用list存储了命令行的所有参数。argv至少有一个元素,因为第一个参数永远是该.py文件的名称,例如:
运行python3 hello.py获得的sys.argv就是['hello.py'];
运行python3 hello.py Michael获得的sys.argv就是['hello.py', 'Michael]。
类似__xxx__这样的变量是特殊变量,可以被直接引用,但是有特殊用途,比如上面的__author__,__name__就是特殊变量;
类似_xxx和__xxx这样的函数或变量就是非公开的(private),不应该被直接引用,比如_abc,__abc等;
自己写的模块要放在当前目录下;
'''
a=sys.argv
元类meta class/abc
我写一个模块导入某个类Hello时,这个Hello的type实际是一个type,也就是说,我可以通过type()直接构造一个类,不一定需要用class xx(object)的定义;
Hello = type('Hello', (object,), dict(hello=fn)) # 创建Hello class
#type()传入类名、继承的父类集合(支持多重继承,如果是单个要用tuple的单元素写法)、class的方法名称与函数绑定;
除了type()方法,还可以用metaclass;
metaclass→class→实例
lambda x
lambda x:x[0]
#对于嵌套if的语句
expression1 if A else expression2
#含义是 if A:expression1 else: expression2
print()不换行
print(1,end="")#end参数
print(3)
'''
output:
13
'''
find()
str.find(str, beg=0, end=len(string))
'''
beg=开始查找的位置
end=结束查找的位置
'''