Day12 生成式、文件

生成式

  1. 什么是生成式

    生成式就是生成器的一种特殊写法

  2. 写法

    • 生成器 = (表达式 for 变量 in 序列) ==> 让变量去序列中取值,每取一个值就将对应的表达式的值作为生成器的元素

      def 函数名():
      ​ for 变量 in 序列:
      ​ yield 表达式

    • 生成器 = (表达式 for 变量 in 序列 if 条件语句)

      def 函数名():
      ​ for 变量 in 序列:
      ​ if 条件语句:
      ​ yield 表达式

      gen1 = (x for x in range(5))
      print(gen1)
      
      
      # 这是生成式展开为生成器的写法
      def fun1():
          for x in range(5):
              yield x*2
      
      
      gen1 = ((value, key)for key, value in {'name': 'xiaoming', 'age': 10}.items())
      
  3. 迭代器和生成器转换成其他的序列(转换成列表的实质是,遍历,然后将每个元素添加到列表中)

    list1 = list(gen1)
    # [生成式] -->   直接将生成式对应的生成器转换成列表
    list2 = [(value, key)for key, value in {'name': 'xiaoming', 'age': 10}.items()]
    
    # 练习:交换字典中的key, value的位置
    dict1 = {'a': 1, 'b': 2, 'c': 3}
    result = dict((x, y) for y, x in dict1.items())
    print(result)
    

文件

  1. 数据本地化和数据持久化
    将数据以文件的形式存到计算机硬盘当中(程序中保存的数据当程序结束后会自动销毁)

  2. 怎么数据持久化(怎么将程序中的数据和本地文件中的数据关联)
    文件读写操作 - 读(获取文件中的内容) 写(将数据添加到文件中)

    文件操作的基本流程:打开文件->文件操作(读/写)->关闭文件

  3. 打开文件
    open(file, mode = 'r', encoding=None) ---> 以指定的模式打开指定文件并且返回被打开的文件对象

说明:
file -- 字符串,需要打开的文件的路径
​ 绝对路径 -- 文件在电脑上的全路径
​ 相对路径 -- 相对当前代码对应的文件目录
​ '致橡树.txt' './致橡树.txt'

mode -- 字符串,文件的打开方式
​ r --> 以只读的方式打开,文本
​ w --> 以写的形式打开(覆盖),文本
​ a --> 以写的形式打开(追加),文本
​ rb/br --> 以只读的形式打开,二进制
​ wb/bw --> 以写的形式打开(覆盖),二进制
​ + --> 以读写的形式打开

encoding -- 字符串,文件编码方式
​ utf-8:支持所有的语言
​ gbk:只支持英文
注意: a.读写对应的编码要保持一致
​ b.非文本文件不能设置编码方式,例如:图片,视频,可执行文件
​ c.给他传值的时候要使用关键字参数
​ d.以二进制的形式打开文件,不能设置encoding

注意:当以读的方式打开一个不存在文件,程序会报fileNotFindeError
​ 以写的方式打开一个不存在的文件,就会创建一个新的文件

  1. ======================写操作====================
    如果需要文件进行写操作,name文件必须以写的方式打开
    w --> 用新的内容覆盖原文件内容
    a --> 在原文件末尾添加新的内容
    f2 = open('致橡树.txt', 'a', encoding='utf-8')
    f2.write('郭锐是个大傻逼,大傻逼啊大傻逼\n')

    图片下载过程,骑牛图片二进制数据,将二进制写入本地文件

  2. 关闭文件 文件对象.close()

  3. 文件操作的简写方式

    """
    with open() as 文件对象:
        文件操作代码
    """
    

你可能感兴趣的:(Day12 生成式、文件)