python学习笔记

1.装饰器(相当于化妆)        
1)def outer("形参"func):
def inner(形参):
   if age<0
               age=0
            func()
        return inner
f=outer(func1"实参")
调用时 @outer
**********************************
2)通用装饰器
def outer("形参"func):
def inner(*args,**kwargs):
   #添加修饰功能
            func(*args,**kwargs)
        return inner


调用方法:
@outer
def say(name,age):
**********************************
2.#刷新缓冲区立刻写入文件,不用等待关闭或自动刷新缓冲区写入
f.fluse()
刷新缓冲区:手动;关闭文件;缓冲区满了自动刷新
**********************************
3.编码与解码(二进制需要)
encode()
decode()
**********************************
4.improt pickle   #数据持久性模块


myList=[1,2,3,4,5,"zoe is a girl"]
path="C:/"
f=open(path,"wb")
pickle.dump(myList,f)
f.close()


#读取
f1=open(path,"rd")
tempList=pickle.load(f1)
print(tempList)
f1.close()
**********************************
5.os模块
#获取操作系统类型 nt->windows  posix->Linux/Unix或Mac os x
print(os.name)
#打印操作系统详细信息(Windows不支持)
print(os.uname())
#获取操作系统中的所有环境变量
print(os.environ)
#获取指定环境变量
print(os.environ.get("hjhj"))
#获取当前目录
print(os.curdir)
#获取当前工作目录,即当前Python脚本所在目录
print(os.getcwd())
#以列表的形式返回指定目录下的所有文件
print(os.listdir("C:/"))
#在当前目录下创建新目录
os.mkdir("C:/")
os.mkdir("zoe")
#删除目录
os.rmdir("zoe")
#获取文件属性
print(os.stat("zoe"))
#重命名
os.rename("zoe","bo")
#删除普通文件
os.remove("file1.txt")
#运行shell命令
os.system("notepad")--打开记事本
os.system("write")--打开写字板
os.system("mspaint")--画板
os.system("msconfig")--系统设置
os.system("shutdown -s  -t 500")--关机
os.system("-shutdown -a")--取消关机
os.system("taskkill/f/im notepad.exe")--关闭应用
#有些方法存在os模块里,有些在os.path里
#查看当前的绝对路径
print(os.path.abspath("."))
#拼接路径
os.path.join(p1,p2)
注意:参数p2里开头不要有斜杠
#拆分路径
os.path.split(path)
#获取扩展名
os.path.splitext(path)
#判断是否是目录
os.path.isdir(path)
是true,不是false
#判断文件是否存在
os.path.isfile(path)
#获取文件大小
os.path.getsize(path)字节
#文件的目录
os.path.dirname(path)
#文件名
os.path.basename(path)
**********************************
6.窗体
**********************************
7.递归
递归调用:一个函数,调用了自身;
递归函数:一个会调用自身的函数。
凡是循环能干的事,递归都能干


方式:
1)写出临界条件
2)找这一次和上一次的关系
3)假设当前函数已经能用,调用自身计算上一次的结果,再求出本次的结果


#模拟栈的结构
stack=[]


#压栈(向栈里存数据)
stack.append("a")


#出栈
stack.pop()


#创建一个队列
import collections


queue=collections.deque()


#出队
test=queue.popleft()


**********************************
8.时间表示形式
1)时间戳
以整型或浮点型表示时间的一个以秒为单位的时间间隔,这个时间间隔的基础值是从1970年1月1号开始算起。
2)元组
一种Python的数据结构表示,这个元组有9个整形内容
year/month/day/hours/minutes/seconds/weekday/julia day/flag(1,-1或0)
3)格式化字符串
%y、%z...


#返回当前时间的时间戳,浮点数形式,不需要参数
c=time.time()
#将时间戳转为UCT时间元组
t=time.gmtime()
#将时间戳转为本地时间元组
b=time.localtime(c)
#将本地时间元组转成时间戳
m=time.mktime(b)
#将时间元组转成字符串
time.asctime()
#将时间戳转成字符串
time.ctime()
#将时间元组转成给定形式的字符串,参数2为时间元组,如果没有参数2,默认转当前时间
q=time.strftime("%y-%m-%d %H:%M:%S",b)
#将时间字符串转为时间元组
time.strptime(q,"%Y-%m-%d %x")
#延迟一个时间,整型或浮点型
time.sleep(2.3)
#返回当前程序的CPU执行时间
#Unix形同返回全部的运行时间
#windows从第二次开始,都是以第一个调用此函数的开始
time.clock()


$datetime比time高级了不少,可以理解为datetime基于time进行了封装,提供了各位使用的函数,datatime模块的接口更直观,更容易调用


模块中的类
datetime      同时有时间和日期
timedelta     主要用于计算时间的跨度
tzinfo        时区相关
time          只关注时间
date          只关注日期
...


#获取当前时间
d1=datetime.datetime.now()
#获取指定时间
d2=datetime.datetime(1999,10,1,10,28,25,123456)
#将时间转为字符串
d3=d1.strftime("%y-%m-%d" %x)
#将格式化字符串转为datetime对象
#注意:转换的格式要与字符串一致
d4=datetime.datetime.strptime(d3,"%y-%m-%d" %x)


d5=datetime.datetime(1999,10,1,10,28,25,123456)
d6=datetime.datetime.now()
d7=d6-d5
print(d7)
print(type(d7))
#间隔的天数
print(d7.days)
#间隔天数除外的秒数
print(d7.seconds)




$日历模块
import calendar
#返回指定某年某月的日历
print(calendar.month(2017,7))
#返回指定年的日历
print(calendar.calendar(2017))
#闰年返回true,否则返回false
返回某个月的weekday的第一天和这个月的所有天数
print(calendar.monthrange(2017,5))
#返回某个月以每一周为元素的列表
print(calendar.monthcalendar(2017,7))


**********************************
9.模块的使用和面向对象
把相似功能的函数分组,分到不同的文件中,大致功能用文件名体现,一个.py就是一个模块


import sys


print(sys.argv)
#获取命令行参数的列表
for i in sys.argv:
print(i)


name=sys.argv[1]
print(name)


#自动查找所需模块的路径
print(sys.path)
**********************************
10.正则表达式
**********************************
11.爬虫


import urllib.request


#向指定的url地址发起请求,并返回服务器相应的数据(文件的对象)
response=urllib.request.urlopen("http://www.baidu.com")


#读取文件的全部内容,会把读取到的数据赋值给一个字符串变量
data=response.read()
print(data)
print(type(data))




#将爬取到的网页写入文件
with open(r"c:\Users\file.html","wb") as  f:
f.write(data)


#读取一行
data=response.readline()


#response属性
#返回当前环境的有关信息
print(response.info())


#返回状态码
print(response.getcode())


200表示成功 304表示已经执行了get,但文件未变化 400错误




#返回当前爬取的URL地址
print(response.geturl())


#解码
newurl=urllib.request.unquote(url)
#编码
newurl2=urllib.request.quote(newurl)




#爬取到的网页直接写入文件
urllib.request.urlretrieve("http://www.baidu.com",filename=r"c:\Users\file.html")


#urlretrieve在执行过程中,会产生一些缓存
#清除缓存
urllib.request.urlcleanup()




#模拟浏览器(为了防止反爬虫)


User-Agent--浏览器信息Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.11 TaoBrowser/2.0 Safari/536.11




import urllib.request
url="http://www.baidu.com"




#模拟请求头




headers={"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.11 TaoBrowser/2.0 Safari/536.11"}




#设置一个请求体
req=urllib.request.Request(url,headers=headers)


#发起请求
reaponse=urllib.request.urlopen(req)
data=response.read().decode("utf-8")
print(data)







































































阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页