2020-08-08 第十六讲-操作二制文件

时间过得飞快,一个月的python核心基础课程已经结束了。学的晕晕乎乎的,总觉着自己没有长进。好多东西懵懵懂懂,一个屌丝要想蜕变成码农需要有螺丝钉的转劲儿的,Jerry老师用一篇开玛莎莱蒂的美文和我叫王顺德励志视频作为课程结束,意义在于让我们刻苦练习代码。我将本节课程复述一遍。

1、文件的其他写入方式

 x 用来新建文件,如果不存在就创建文件,文件存在我就报错了

 FileExistsError: [Errno 17] File exists: 'demo5.txt'

file_name = 'demo6.txt'

with open(file_name, 'x', encoding='utf-8') asfile_obj:

   file_obj.write('nba\n')


2、 操作二进制文件

 b 二进制文件


file_name = r'C:\Users\19214\Desktop\Kalimba.mp3'

with open(file_name,'rb') as file_obj:

     print(file_obj.read(100))

     将读取到的内容写出来

     定义一个新的文件

    new_name ='abc.mp3'

    withopen(new_name,'wb') as new_obj:

        chuck =1024 *100

        while True:

            从已有的文件读取内容

           content = file_obj.read(chuck)

            内容读取完毕,循环结束

            ifnot content:

               break

           new_obj.write(content)

3、迭代器

 迭代:就是在一些元素中获取元素的过程或者是一种方式

 迭代器 它是一个可以记住遍历位置的对象。迭代器对象从序列中的一个元素开始访问,直到所有的元素被访问完结束,而且只能往前不能往后

 可以被next()函数调用并不断返回下一个值的对象我们称之为迭代器Iterator

可迭代:可迭代对象 1. 生成器 2. 列表、元祖、字符串、字典...

生成器是可迭代的,也是迭代器

列表是可迭代的。但是它不是迭代器


 iter(lst)

通过iter()函数可以将可迭代的变成一个迭代器


from collections import Iterable


lst = [1,2,3,4]

s = (x + 1 for x in range(5))


r = isinstance(lst,Iterable)

r = isinstance('abc',Iterable)

r = isinstance(132,Iterable)

r = isinstance(s,Iterable)

print(r)

lst = iter(lst)


print(next(lst)) # TypeError: 'list' object is not aniterator


print(next(lst))


生成器和迭代器

生成器的出现是为了优化程序节省内存

迭代器是一个大的范围而生成器只是迭代器的一种

4、 单例模式

单例模式是设计模式的一种,保证系统中的一个类只有一个实例

class Person:

     pass


p1 = Person()

p2 = Person()


print(p1)

print(p2)


>>> 1、谁创建了对象?

 Person类的父类是object 继承object

 object有一个new方法来创建对象

 创建对象之后,才可以执行 __init__(self),进行初始化


 class Person:

     def__new__(cls, *args, **kwargs):

         print(123)

         def__init__(self):

             print('初始化方法....')

 p1 = Person()

 >>>2. 对象的执行顺序


 class Person:

     def__new__(cls, *args, **kwargs):

         print(123)

         obj =object.__new__(cls) #创建了一个对象

         returnobj


    def__init__(self):

        print('创建完对象之后再初始化....')


 p1 = Person()


class Person:


 >>>3、私有变量

    _instance =None

    def__new__(cls, *args, **kwargs):

        print(123)

        ifPerson._instance is None:

             obj= object.__new__(cls) 

#创建了一个对象

             Person._instance = obj 

#将这个对象赋值给类的私有变量_instance

        returnPerson._instance

    def__init__(self):

         print('创建完对象之后再初始化....')


p1 = Person()

p2 = Person()

p3 = Person()

print(id(p1),id(p2),id(p3))

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 包(lib)、模块(module) 在Python中,存在包和模块两个常见概念。 模块:编写Python代码的py...
    清清子衿木子水心阅读 3,914评论 0 27
  • 一、列表推导式:用来创建列表 > 所谓的列表推导式,就是指的轻量级循环创建列表 格式:列表推导式的常见形式: my...
    MAVIS_42bf阅读 718评论 0 0
  • python的函数参数传递 看两个例子: 所有变量都可以理解为内存中一个对象的“引用”,或者,可以看做C中的vio...
    marvinxu阅读 6,028评论 2 30
  • 久违的晴天,家长会。 家长大会开好到教室时,离放学已经没多少时间了。班主任说已经安排了三个家长分享经验。 放学铃声...
    飘雪儿5阅读 7,866评论 16 22
  • 创业是很多人的梦想,多少人为了理想和不甘选择了创业来实现自我价值,我就是其中一个。 创业后,我由女人变成了超人,什...
    亦宝宝阅读 2,018评论 4 1

友情链接更多精彩内容