笔记
移动平均生成器
def jisuan():
get_num=0
avg=0
total=0
count=1
while True:
get_num=yield avg
total=total+get_num
avg=total/count
count+=1
b=jisuan()
next(b)
print(b.send(10))
print(b.send(20))
print(b.send(30))
写一个循环嵌套装饰器
import time
def decore1(f):
def haha():
print('*')
f()
print('**')
return haha
def decore2(f):
def hehe():
print('1#')
f()
print('2#')
return hehe
@decore1
@decore2
def hanshu():
print('hello')
hanshu()
写一个带有返回值的装饰器
def decore1(func):
def haha(name,age):
print('***')
ret=func(name,age)
print('*****')
return ret
return haha
@decore1
def hanshu(name,age):
print(name,age)
return name+str(age)
x=hanshu('刘德华',19)
print(x)
用property写一个计算圆的周长和面积
from math import pi
class Cirlce():
def __init__(self,r):
self.r=r
def zhouchang(self):
return pi*2*self.r
def mianji(self):
return pi*self.r*self.r
a=Cirlce(3)
print(a.mianji())
print(a.zhouchang())
eg:
f=open('d:\\a.txt','r')
x=f.read(10)#每行只读十个
while len(x)>0:
print(x,end='###')
x=f.read(10)
f.close()
eg:
a=[1,2,3,4,5]
f=open('d:b.txt','w')
i=0
while i<len(a):
f.write(str(a[i])+'\n')##'\n'是换行
i+=1
f.write('hello'+'\n')
f.write('haha')
f.close()
eg:
f=open('b.txt','r')
x=f.readline()
print(x,end='#')##print后面是带有‘\n’的,所以‘#’跟着换行符后面
x=f.readline()
print(x)
f.close()
用readline打印全部,用循环
f=open('b.txt','r')
x=f.readline()
while len(x)>0:
print(x)
x=f.readline()
f.close()
f=open('b.txt','r')
for x in f:
print(x,end='')
.write(),.writelines()的使用,.writelines是一次性写入多行
f=open('b.txt','w')
f.write('你好')
a=['我好','哈哈']
f.writelines(a)
f.close()
使用with…as ,打开文件,不用再使用,.close()
with open('b.txt','r') as f:
b=f.read()
print(b)
写出read(),readline(),readlines()的区别,用with。。。。as写
with open('b.txt','r') as f:
b=f.read(3)#默认读取全部,如果加参数的话,读取参数的个数
print(b)
c=f.readline()#只读取一行
print(c)
d=f.readlines()##读取全部内容,并且返回的是列表
print(d)
##逐行打印
with open('b.txt','r') as f:
count=0
b=f.readline()
while len(b)>=0:#判断每一行是否有字符
if count<len(b):
print(b[count])
count += 1
b = f.readline()
for循环:
with open('b.txt','r') as f:
b=f.readlines()
for i in range(len(b)):
if i<len(b[i]):
print(b[i][i])
eg:
with open('b.txt','r') as f:
b=f.readlines()
for i in range(len(b)):
if i<len(b[i]):
print(b[i][i])
import os
os.rename('b.txt','c.txt')##重命名
os.rename('c.txt','d:\\agg.txt')#移动
os.remove('b.txt')#移除
os.makedirs('gaga\\saff')#生成多级目录
os.mkdir('sfs')#生成单层目录
#输入一个字符串,生成该目录,用mkdir
a='a\\b\\c\\d\\e'
dl=a.split('\\')##split生成的是列表
mulu=''
for x in a:
mulu=mulu+x
if not os.path.exists(mulu):
os.mkdir(mulu)
mulu += '\\'#添加反斜杠
os.rmdir(’’)#删除单层空目录
os.removedirs(‘a\b\c\d\e’)#删除多级目录
删除a-e的包,不用removedirs
a='a\\b\\c\\d\\e'
while len(a)>0:
if os.path.exists(a):
os.rmdir(a)
x=a.rfind('\\')
a=a[:x]
获取当前列表os.getcwd()
获取目录列表os.listdir
改变当前列表
b=os.getcwd()
print(b)
b=b+'\\venv'
os.chdir(b)
print(os.getcwd())
判断是文件还是目录
b=os.path.isdir('b1')
print(b)
c=os.path.isfile('day24.py')
print(c)
获取绝对路径
b=os.path.abspath('day24.py')
print(b)
c=os.path.isabs()#判断是不是绝对路径
a=os.path.basename('D:\pywork\day24.py')##获取路径最后一部分
print(a)
a=os.path.dirname()#获取路径中的路径,就是出去最后面的部分
作业
1.自定义创建目录方法
a='a\\b\\c\\d\\e'
b=a.split('\\')
mulu=''
for x in b:
mulu+=x
if not os.path.exists(mulu):
os.mkdir(mulu)
mulu+='\\'
os.removedirs('a\\b\\c\\d\\e')
2.用户输入文件名以及开始搜索的路径,搜索该文件是否存在,如遇到文件夹,则进入文件夹继续搜索
sys.setrecursionlimit(1000) # set the maximum depth as 1500
def file_find(file_path, file_name):
if os.path.isdir(file_path):
# os.chdir(file_path)#进入当前路径
file_list = os.listdir(file_path)
for each in file_list:
temp_dir = file_path + os.sep + each
if os.path.isdir(temp_dir):
##递归
temp = file_find(temp_dir, file_name)
if temp == True:
return True
elif os.path.isfile(temp_dir) and each == file_name:
return True
# os.chdir('..') #没找到文件,退回上一个目录
return False
else:
print('{}不是一个目录'.format(file_path))
- 通过给定的文件夹, 列举出这个文件夹当中, 所有的文件,以及文件夹, 子文件夹当中的所有文件
def listFilesToTxt(dir, file):
file_list = os.listdir(dir)
for file_name in file_list:
new_fileName = dir + "/" + file_name
# 判定, 是否是目录, listFiles
if os.path.isdir(new_fileName):
# print(new_fileName)
file.write(new_fileName + "\n")
listFilesToTxt(new_fileName, file)
else:
# 打印下, 文件名称
# print("\t" + file_name)
file.write("\t" + file_name + "\n")
# print("")
file.write("\n")
f = open(os.getcwd() + "\\list.txt", "a", encoding='utf-8')
listFilesToTxt(os.getcwd() + "\\dir", f)