python学习四之文件操作,单例设计模式,异常处理,模块,包概述

单例设计模式:

1.设计模式是针对某一个特定问题成熟的解决方案
2.使用设计模式是为了可重用代码,让代码更容易理
3.解,保证代码的可靠性
4.让类创建的对象,在系统中只有唯一的一个实例
每次执行 类名()返回对象,内存的地址是相同的

__new__方法

在使用类名()创建对象的时候,python的解释器会调用__new__方法为对象,分配空间
__new__是一个由object的基类提供的静态的方法
1)在内存中为对象分配空间
2)返回对象的调用
当python的解释器获得对象的引用的时候,将引用的第一个参数,传递给__init__方法
重写__new__方法一定要return super().new(cls)否则python的解释器得不到分配了空间的引用对象,就不会调用对象的初始化方法
注意:__new__是一个静态的方法,在调用的时候需要主动的传递cls参数,类属性的调用需要使用 cls.类属性

class MusicPlayer(object):
    def __new__(cls, *args, **kwargs):
        #创建对象的时候,new方法会被自动的调用,方法被重写,不会再调用父类中的__new__方法
        print("创建对象,分配空间")
        return super().__new__(cls)
    def __init__(self):
        print("播放器初始化!")
player=MusicPlayer()
print(player)

python中的模块

每一个扩展名py结尾的python源代码都是一个核心的模块
模块名同样是一个标识符,复合标识符的命名规则
模块就是工具包,想要使用这个工具,就需要先导入这个模块
模块的导入方式:

import导入
import 模块名一
import 模块名二

通过 模块名. 的方式使用模块工具,还可以是用as指定模块的名称以方便在代码的使用,模块名符合大驼峰命名
2.from…import导入:
如果希望从一个模块中,导入部分的工具,就可以使用from…import的方式导入

#从模块中导入部分的工具
from 模块名1import 工具名

在开发中,import导入的语句应放在代码的顶部
当导入的工具名相同时,会对第一次导入的工具名进行覆盖,可以使用as对第一次的工具名起别名
3.from…import *

从模块中导入所有工具
from 模块名  import*

__file__可以查看当前模块属性的路径
每一个python文件都是可以被导入的

__name__属性

__name__属性可以做到测试代码块。只在测试的情况下被运行,在被导入时不会被执行
__name__是python中的内置函数,记录一个字符串
如果是被其他的文件导入的,__name__输出的就是模块名
如果是当前执行的程序,name__输出的就是__main

python中的包:

包是一个含有多个模块的特殊目录,目录下方有一个特殊的文件__init__.py,包的命名方法:小写字母+_,使用import 包名,可以一次性的导入包中的所有模块
init.py
要在外界使用包中的模块,需要在__init__.py中指定对外界的模块的列表

从当前的目录导入模块的列表
from .import send_message
from .import receive_message

发布自己的模块:
创建setup.py的文件
构建模块
生成发布压缩包

文件的基本操作:

计算机上的文件就是存储在设备上的数据,计算机上的文件是以二进制的方式保存的
1.打开文件
2.读写文件,读,将文件读入内存,写,将文件写入内存
3.关闭文件
操作文件函数和方法:一个函数,和三个方法
open:打开文件,返回文件操作对象
read:将文件读取到内存
write:将指定内容写入到文件
close:关闭文件

read方法——读取文件

open函数的第一个函数是要打开的文件名(区分文件名)
如果文件存在,返回文件的操作对象
如果文件不存在,会抛出异常
read方法可以一次性读入并返回文件的所有内容
close方法用于关闭文件,如果文件忘记关闭,会造成系统资源消耗,会影响后续对文件的访问,当方法执行后,会将文件指针移动到文件的末尾,如果再次调用read函数时,不会再读取到任何的内容
open函数默认的打开方式以只读的方式打开文件,返回文件的本身

f=open("文件名","访问方式")

在这里插入图片描述

readline方法:
readline方法可以一次读取一行的内容
方法执行后会把文件的指针移动到下一行,再次读取

file=open("kaka")
while True:
    text=file.readline()
    if not text:
        break
    print(text)
file.close()

小文件的复制
读取完整的内容,并写入另一个文件

#1.打开文件
file1=open("kaka")
file2=open("kaka附件","w")
# 2.读写文件
text=file1.read()
file2.write(text)
# 3.关闭文件
file1.close()
file2.close()

大文件的复制:
打开一个已有的文件逐行的读取内容,并按顺序写入到另一个文件

#打开文件
file1=open("kaka")
file2=open("kaka复制","w")
while True:
    test=file1.readline()
    if not test:
        break
    file2.write(test)
#关闭文件
file1.close()
file2.close()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值