path.dirname

print(__file__)
import os
print(os.path.dirname(__file__))

#sys.path python 默认去根据【】的路径去找模块



print(__file__)
import os
import sys
from lib.xx import aaa
print(os.path.dirname(__file__))
sys.path.append(os.path.dirname(__file__) + "/lib/xx")
for i in sys.path:
print(i)
os.path.join

md5

import hashlib
import string

hash1 = hashlib.md5()
hash1.update(bytes("123",encoding = "utf-8"))
h = hash1.hexdigest()
n = int(h,base=16)

print(n)
print(h)
print(hex(n))


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\python.exe “C:\Program Files\JetBrains\PyCharm 2017.2\helpers\pydev\pydevd.py” –multiproc –qt-support=auto –client 127.0.0.1 –port 6131 –file C:/Users/Administrator/PycharmProjects/py/md5test6.py
pydev debugger: process 5276 is connecting

Connected to pydev debugger (build 172.3757.67)
42767516990368493138776584305024125808
202cb962ac59075b964b07152d234b70
0x202cb962ac59075b964b07152d234b70

Process finished with exit code 0

开放封闭原则 装饰器

对于函数内部是封闭的

@outer

1.执行outer函数,并且将其下面的函数名当作参数

2.将outer的返回值重新赋值给f1(相当于再定义一个f1,让f1=outer的返回值)

新f1函数=inner

原函数封装到其它函数里边

执行新的函数

只要函数应用装饰器,那么函数就被重新定义,重新定义为:装饰器的内层函数

image

回顾

1.lambda

func = lambda x,y:9+x

参数:x,y

函数体:9+x==>>return 9+x

func:函数名

def func(x,y):

return x+9

def f1():

return “F1”

def f2(x):

x()#执行了函数

f1=>函数

f2=>函数

f1()=>执行函数

f2(f1)执行f2,把f1当成参数传递

扩展:函数名可以当做参数传递

            函数名()=>执行函数

            函数名==》代指函数

def MyFilter(func,arg):
for i in arg:
func(i)
def MyPrint(x):
print(x)
MyFilter(MyPrint,[11,22,33,44,55,6,6])

Connected to pydev debugger (build 172.3317.103)
11
22
33
44
55
6
6

Process finished with exit code 0

open()

一、打开文件

二、操作文件

三、关闭文件

基本的打开方式

open(文件名,模式,编码)默认是只读模式就是”r”

f = open("ha.log")#equals open("ha.log","r")
data=f.read()
f.close()
print(data)

r,只读模式【默认】
w,只写模式【不可读;不存在则创建;存在则清空内容】
x,只写模式【不可读,不存在则创建;存在则报错】
a,追加模式【不可读,不存在则创建,存在则只追加内容】

”+”表示可以同时读写文件
r+,读写【可读、可写】 从开始向后读 写追加,指针调到最后
w+,写读【可读,可写】 先清空,从开始向后读,写也是追加数据,每次都是重新写 f.write(“中”)
x+,写读【可读,可写】 文件存在则报错
a+,写读【可读,可写】 找开后就在最后

都可以通过seek调整

#python3中的
”b”表示以字节的方式操作
rb或r+b
wb或w+b
xb或x+b
ab或a+b
注:以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型


flush()刷到硬盘里

f.read(1)读取一个字符
f.read(1)带b读取一个字节