1.读取文件 格式:
read() file=open("D:\\a.txt",'r') ret=file.read() # print(ret) file.close() file叫做文件句柄(变量)用来操作文件 第一个参数是文件的路径 第二个参数 mode=访问的文件模型,r表示读,默认也是r模式 read()括号里不写东西代表读取文件中的所有内容 read()括号里写代表读几个字符,例如read(4)还可以使用with方式 使用with方式操作文件,可以不用关闭文件,会自动关闭文件
with open("D:\\a.txt",'r') as f: print(f.read()) readline() readline每次读取一行,并且自带换行功能 每一行末尾会读到\n readline(3)读取指定个字符 a=open("D:\\a.txt","r") b=a.readline() print(b) b=a.readline() print(b) b=a.readline(3) print(b) a.close() readlines() readlines,一次性以行的形式读取文件的所有内容并返回一个list,需要遍历读出来 a=open("D:\\a.txt","r") b=a.readlines() print(b) # ['12345678\n', 'abc\n', 'def'] a.close() 循环读取,每次读取一行 for x in open("D:\\a.txt",'r'): print(x) a=open("D:\\a.txt","r") b=a.readline() while len(b)>0: print(b) b=a.readline() a.close()写操作 和读操作的格式类似,只是把r换成w,把read()换成write()
file=open("D:\\a.txt",'w') file.write(" 要写入的内容") file.close()乱码 python在读写文件的时候,默认使用的编码为平台编码,也就是gbk 在pycharm中创建的文件默认使用的是utf-8编码
往pycharm中a.txt中保存内容:乱码向磁盘中的文件保存内容:不乱吗指定编码(解决乱码问题) with open("p.txt","w",encoding='utf_8') as p: p.write("你好")一、重命名文件 rename
import os os.rename("a.txt",'shuaige.txt')二、删除文件 remove
os.remove("shuaige.txt")三、创建目录和删除目录 mkdir() rmdir()
os.mkdir("a") # 创建目录 os.rmdir("a") # 删除目录四、创建多级目录和删除多级目录 makedirs() removedirs()
os.makedirs("a\\b\c\d") # 创建多级目录 os.removedirs("a\\b\c\d") # 删除多级目录五、获取当前所在目录 getcwd()
x=os.getcwd() # 获取当前工作目录 print(x) # D:\python project\第三周\第四天六、获取目录列表 listdir(path)
print(os.listdir(os.getcwd())) # 当前工作目录目录列表七、切换所在目录 chdir()
os.chdir("E:\\") # 切换所在目录 print(os.getcwd()) # 切换当前文件目录八、判断文件或文件夹是否存在 os.path.exists(path)
b=os.path.exists("b\\eee.py") print(b)九、判断是否为文件和判断是否为目录 os.path.isfile(‘cla.py’) os.path.isdir(‘test’)
b=os.path.isfile("b\\eee.py") print(b) b=os.path.isdir("b") # b是相对路径,只在当前目录下能找到 print(b)十、获取绝对路径 os.path.abspath(‘test’)
b=os.path.abspath("b") # 绝对路径 D:\python project\第三周\第四天\b 从根输出到最后 print(b)十一、判断是否为绝对路径 os.path.isabs(os.getcwd()) # 是返回True ,不是返回False
b=os.path.isabs("b") # 判断是不是绝对路径 print(b) b=os.path.isabs(os.getcwd()) print(b,os.getcwd()) 运行结果: False True D:\python project\第三周\第四天十二、获取路径中的最后部分 os.path.basename(‘file02\dile03\aa’) # 返回aa
b=r"D:\python project\第三周\第四天\8月1号.py" x=os.path.basename(b) # 获取路径的最后部分 print(x) # 8月1号.py十二、获取路径中的路径部分 os.path.dirname(’’)
print(__file__) # D:/python project/第三周/第四天/8月1号.py print(os.path.basename(__file__)) # 8月1号.py print(os.path.dirname(__file__)) # D:/python project/第三周/第四天请用mkdir实现mkdirs
import os a="a\\b\\c\\d\\e" ls=a.split("\\") print(ls) # ['a', 'b', 'c', 'd', 'e'] pd="" for p in ls: pd=pd+p if not os.path.exists(pd): os.mkdir(pd) pd=pd+"\\"异常 定义: 异常是指在语法正确的前提下,程序运行时报错 异常捕获 基本语法: try: 代码1 代码2 except 异常类型: 处理异常代码 多分支结构: try: 代码1 代码2 except 异常类型: 捕获异常1 except 异常类型: 捕获异常2 元祖结构: try: 代码1 代码2 except (异常类型1,异常类型2,异常类型3): 捕获异常…
try: a=1/0 print(a) except ZeroDivisionError as p: print(p) print("跑到这了") try: a=[1,2,3] print(a[2]) # print(a[3]) print(3/0) except IndexError as i: print(i) # list index out of range except ZeroDivisionError as f: print(f,"----") # division by zero ---- print("结束") try: a=[1,2,3] print(a[2]) # print(a[3]) print(3/0) except (IndexError,ZeroDivisionError) as i: print("异常是:",i) print("结束") 3 异常是: division by zero 结束 try: a=[1,2,3] print(a[2]) print(3/1) except IndexError as i: print(i) except ZeroDivisionError as f: print(f,"----") else: # 没异常的处理 print("我在这,我没异常") print("结束")捕获所有异常: 格式: try: 代码 except: 捕获异常 或者:(Exception是所有异常的父类) try: 代码 except Exception: 捕获异常
try: a=[1,2,3] print(a[2]) print(3/0) except Exception as f: # 或者except print("我错了,异常是:",f) # 我错了,异常是: division by zero else: # 没异常的处理 print("我在这,我没异常") print("结束")else前一定要有except
try: a=[1,2,3] print(a[2]) print(3/0) else: # 没有except报错,else前一定要有except print("我在这,我没异常") print("结束")finally无论是否抛出异常,都执行finally中的代码
try: a=[1,2,3] print(a[2]) print(3/0) except Exception as f: # 或者except print("我错了,异常是:",f) else: # 没异常的处理 print("我在这,我没异常") finally: print("无论有没有错误,我都会执行") print("结束") 我在这,我没异常 无论有没有错误,我都会执行 结束触发异常: 用raise抛出异常
while True: name=input("请输入姓名:") try: if len(name)<3: raise Exception("姓名太少") except Exception as f: print(f) break抛出自定义异常(自己定义的异常)
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) class ShortException(Exception): def __init__(self,length,at_least_len): self.length=length self.at_least_len=at_least_len def __str__(self): return "您输入了{}个字符,最少要{}个字符".format(self.length,self.at_least_len) t=input("请输入字符串:") try: if len(t)<10: raise ShortException(len(t),10) except ShortException as f: print(f)单例模式: 是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在
实例:
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=("王五") print(id(zs)) print(id(ls)) print(zs.name) print(ls.name) 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() else: return Audi() a=Factory.makeCar("宝马") b=Factory.makeCar("奔驰") c=Factory.makeCar("奥迪") a.run() b.run() c.run()策略模式:
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,style): self.style=style def getResult(self,money,): return self.style.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)) style=int(input("请输入优惠方式:")) if style>2: style=0 money=float(input("请输入金额:")) print(a[style].getResult(money))观察者模式:
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) lv=Employee("吕阳阳",ljc) ljc.attach(mk) ljc.attach(cao) ljc.attach(lv) ljc.status="李嘉诚回来了" ljc.notify()