文件介绍
狭义说:文本文件;广义说:超文本文件,图片,声音,超链接,视频
文件分为:文件文件,二进制文件
文件的作用:把一些数据存储放起来
文件操作
读操作
1、read()
一次读取文件全部内容
"r"表示只读权限
"f:\\a.txt"文件所在目录
a=open("f:\\a.txt",'r')
b=a.read()
print(b)
a.close()
“4”表示读取的字符数
a=open("f:\\b.txt",'r')
b=a.read(4)
print(b)
b=a.read(4)
print(b)
b=a.read(4)
print(b)
a.close()
2、readline()
每次读取一行,并且自带换行功能,每一行末尾会读到\n
a=open("f:\\b.txt",'r')
b=a.readline()
print(b)
b=a.readline()
print(b)
b=a.readline()
print(b)
a.close()
a=open("f:\\b.txt",'r')
b=a.readline()
while len(b)>0:
print(b)
b=a.readline()
a.close ()
3、readlines()
一次性以的行的形式读取文件的所有内容并返回一个list,需要去遍历读出来
a=open("f:\\b.txt",'r')
b=a.readlines()
print(b)
for x in b:
print(x)
a.close()
4、循环读取
file 句柄是一个可迭代的对象,可以循环读取文件中的内容,每次读一行。
for x in open("f:\\b.txt",'r'):
print(x)
5、with
with open("f:\\b.txt",'r') as d:
b=d.read()
print(b)
with open("f:\\b.txt",'w',encoding="utf-8") as p:#指定文件格式
p.write('你好呀')
写操作
1、write()
a = open("f:\\b.txt", 'w')
a.write("我爱你北京")
a.close()
2、writelines()
多行一次写入
ls=["aa",'b\n','cc']
a=open("f:\\b.txt",'w')
a.writelines(ls)
a.close()
os 模块
1、重命名文件 os.rename()
import os
os.rename("b.txt",'shuaige.txt')
2、删除文件 os.remove()
os.remove("shuaige.txt")
3、创建目录 os.mkdir()
os.mkdir("b")
4、删除目录 os.rmdir()
os.rmdir("b")
5、创建多级目录 os.makedirs()
os.makedirs("a\\b\\c\\d")
用mkdir实现makedirs
import os
a="a\\b\\c\\d\\e"
ls=a.split("\\")
pd=""
for p in ls:
pd=pd+p
if not os.path.exists(pd):
os.mkdir(pd)
pd=pd+"\\"
6、删除多级目录 os.removedirs()
os.removedirs("a\\b\\c\\d")
7、获取当前所在目录 os.getcwd()
x=os.getcwd()
print(x)
8、切换所在目录 os.chdir()
os.chdir("D:\\")
print(os.getcwd())
9、判断文件或文件夹是否存在 os.path.exists()
b=os.path.exists("b\\eee.py")
print(b)
b=os.path.exists("b")
print(b)
10、判断是否为文件 os.path.isfile()
b=os.path.isfile('b')
print(b)
b=os.path.isfile('b\\eee.py')
print(b)
11、判断是否为目录 os.path.isdir()
b=os.path.isdir('b')
print(b)
b=os.path.isdir('b\\eee.py')
print(b)
``
12、获取绝对路径 `os.path.abspath()
b=os.path.abspath(“b”)
print(b)
13、判断是否为绝对路径 os.path.isabs()
b=os.path.isabs(“b”)
print(b)
b=os.path.isabs(os.getcwd())
print(b,os.getcwd())
14、获取路径中的最后部分 os.path.basename()
b=r"F:\录屏\bin"
x=os.path.basename(b)
print(x)
15、获取路径中的路径部分 os.path.dirname()
print(__file__)
print(os.path.basename(__file__))
print(os.path.dirname(__file__))
异常和设计模式
异常
异常是指在语法正确的前提下,程序运行时报错就是异常
出现异常时 except执行
没有出现异常 else 执行
finally 是否出现异常都执行
raise 抛出一个异常
出现的异常Exception中都有
try:
a=1/0
print(a)
except ZeroDivisionError as p:
print(p)
print("继续运行")
try :
a=[1,2,3]
print(a[3])
print(3/0)
except IndexError as i:
print(i)
except ZeroDivisionError as f:
print(f,"-----")
except(IndexError,ZeroDivisionError) as f:
print("有异常了",f)
print("结束")
try :
a=[1,2,3]
print(a[2])
print(3/2)
except(IndexError,ZeroDivisionError) as f:
print("有异常了",f)
else:
print("我没异常")
try :
a=[1,2,3]
print(a[3])
print(3/2)
except Exception as f:#except
print("异常",f)
else:
print("没异常")
try:
a = [1, 2, 3]
print(a[3])
print(3 / 2)
except Exception as f: # except
print("异常", f)
else:
print("没异常")
finally:
print("无论是否异常都会执行")
class MyExcept(Exception):
def __init__(self,xx):
self.xx=xx
def __str__(self):
return self.xx
try :
raise MyExcept("天上下")
except MyExcept as f:
print(f)
设计模式
1、单列模式
class A():
def __new__(cls, *args, **kwargs):
if not hasattr(cls,"xIns"):
cls.xIns=object.__new__(cls)#产生一个此类对象
return cls.xIns
def __init__(self,name):
self.name=name
zs=A("张三")
ls=A("李四")
ww=A("王五")
print(id(zs))
print(id(ls))
print(zs.name)
print(ls.name)
print(zs is ls)
2、工厂模式
class Bm():
def run(self):
print("宝马在跑")
class Bc():
def run(self):
print("奔驰在跑")
class Ad():
def run(self):
print("奥迪在跑")
class Factory():
@staticmethod
def makecar(name):
if name=="宝马":
return Bm()
elif name=="奔驰":
return Bc()
else:
return Ad()
a=Factory.makecar("宝马")
b=Factory.makecar("奔驰")
c=Factory.makecar("奥迪")
a.run()
b.run()
c.run()
3、策略模式
class Boss():
def __init__(self):
self.observers=[]
self.status=""
def attach(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()
mk=Employee("门开",ljc)
cao=Employee("曹",ljc)
ljc.attach(mk)
ljc.attach(cao)
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,cash):
self.cash=cash
def getResult(self,money):
return self.cash.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))