文件操作
一、读操作
1.read()调用read()会一次性读取文件的全部内容,可以反复调用read(size)方法,每次最多读取size个字符。
2.readline()
readline每次读取一行,并且自带换行功能,每一行末尾会读到\n。
3.readlines()
一次性以行的形式读取文件的所有内容并返回一个list,需要去遍历读出来。
4.循环读取
file句柄是一个可迭代的对象,因此可以循环读取文件中的内容,每次读一行。
二、写操作
1.write()
2.writelines()
file.writelines(seq) 把seq的内容全部写到文件中。
with
使用with方式操作文件,可以不关闭文件,会自动关闭文件。
os模块
1、重命名文件
os.rename()
2、删除文件
os.remove()
3、创建目录
os.mkdir()
4、创建多级目录
os.makedirs()
5、删除目录
os.rmdir()
6、删除多级目录
os.removedirs()
7、获取当前所在目录
os.getcwd()
8、获取目录列表
os.listdir()
9、切换所在目录
os.chdir()
10、判断文件或文件夹是否存在
os.path.exists()
11、判断是否为文件
os.path.isfile()
12、判断是否为目录
os.path.isdir()
13、获取绝对路径
os.path.abspath()
14.判断是否为绝对路径
os.path.isabs()
15、获取路径中的最后部分
os.path.basename()
16、获取路径中的路径部分
os.path.dirname()
异常
基本语法:
try:
代码块
except 异常类型:
代码块
捕获多个异常:
try:
代码块
except 异常类型:
代码块
except 异常类型:
代码块
try:
代码块
except (异常类型1,异常类型2……):
代码块
捕获所有异常:
try:
代码块
except:
代码块
try:
代码块
except Exception:
代码块
else格式
如果程序没有抛出异常,则执行else中的语句。
try:
代码块
except 异常类型 as 变量名:
代码块
else:
代码块
finally格式
不管有没有抛出异常,最终都会执行finally的语句。
try:
代码块
except 异常类型 as 变量名:
代码块
else:
代码块
finally:
代码块
手动抛出异常
raise 异常类型(“描述信息”)
自定义异常:
class ShortException(Exception):
def __init__(self,length,least_len):
self.length=length
self.least_len=least_len
def __str__(self):
return "您输入了{}个字符,最少要输入{}个字符".format(self.length,self.least_len)
t=input("请输入字符串")
try:
if len(t)<10:
raise ShortException(len(t),10)
except ShortException as f:
print(f)
print(t)
设计模式
单例模式
class D():
xins=None
def __new__(cls, *args, **kwargs):
if not cls.xins:
cls.xins=object.__new__(cls)
return cls.xins
def __init__(self,name):
self.name=name
zs=D("zs")
ls=D("ls")
print(zs.name)
print(zs is ls)
工厂模式
class Bmw():
def run(self):
print("宝马在跑")
class Benz():
def run(self):
print('奔驰在跑')
class Audi():
def run(self):
print("奥迪在跑")
class Factory():
@staticmethod
def makeCar(name):
if name=="宝马":
return Bmw()
elif name=="奔驰":
return Benz()
elif name=="奥迪":
return Audi()
a=Factory.makeCar("宝马")
b=Factory.makeCar("奔驰")
c=Factory.makeCar("奥迪")
a.run()
b.run()
c.run()
观察者模式
class Boss():
def __init__(self):
self.observers=[]
self.status=""
def attact(self,ob):
self.observers.append(ob)
def notify(self):
for ob in self.observers:
ob.update()
class Employee():
def __init__(self,name,boss):
self.name=name
self.boss=boss
def update(self):
print("{},{}赶快工作".format(self.boss.status,self.name))
if __name__ == '__main__':
ljc = Boss()
dz = Employee("董震", ljc)
sym = Employee("司扬眉", ljc)
ljc.attact(dz)
ljc.attact(sym)
ljc.status = "李嘉诚回来了"
ljc.notify()
策略模式
class CashNorm():
def accept_money(self,money):
return money
class Cash_rate():
def __init__(self,rate):
self.rate=rate
def accept_money(self,money):
return self.rate*money
class Cash_condition():
def __init__(self,condition,ret):
self.condition=condition
self.ret=ret
def accept_money(self,money):
if money<self.condition:
return money
else:
return money-money//self.condition*self.ret
class Context():
def __init__(self,csh):
self.csh=csh
def getResult(self,money):
return self.csh.accept_money(money)
if __name__ == '__main__':
a={}
a[0]=Context(CashNorm())
a[1]=Context(Cash_rate(0.8))
a[2]=Context(Cash_condition(300,50))
while True:
style=int(input("请输入优惠方式:"))
if style>2:
style=0
money=float(input("请输入金额:"))
print(a[style].getResult(money))