Python基础(文件介绍,文件操作,with,os 模块,异常和设计模式)

2023-10-31 07:56:34

文件介绍

狭义说:文本文件;广义说:超文本文件,图片,声音,超链接,视频
文件分为:文件文件,二进制文件
文件的作用:把一些数据存储放起来

文件操作

读操作

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))
  • 作者:.松鼠小白.
  • 原文链接:https://blog.csdn.net/weixin_45410462/article/details/98102071
    更新时间:2023-10-31 07:56:34