美文网首页
day09 文件操作 2018-07-26

day09 文件操作 2018-07-26

作者: LPP27149 | 来源:发表于2018-07-26 20:45 被阅读0次

    一、模块管理函数和类

    1. 什么是模块?

       一个.py文件就是一个模块

    2. import: 可以通过import关键字导入其他模块

    import 模块名(.py文件名)

    • 直接导入模块的时候相当于把被导入模块的内容粘贴到了import的位置

    3. 怎么使用模块中的内容? 什么内容是可以使用的?

    import 模块名 -------------------- 导入模块中的所有内容
    模块名.内容 (使用模块中的内容)

    • 在模块中声明的全局变量都可以使用(普通变量,函数,类)

    4. 导入指定内容

                  from 模块 import 内容1,内容2

      使用这种方式使用导入的包里面的内容时, 不用在被导入的变量,函数或类前加模块名但不可使用未导入的内容。

    other.py

    def f1():
        print('一个模块中的函数')
    
    
    num = 3
    print('666,六翻了')
    
    from other2 import f1, num
    print(num)
    f1()
    

    666,六翻了
    3
    一个模块中的函数

      

    5. 阻止模块中被导入模块中不必要的代码被粘贴到当前内容

    other2.py

    print('hello world')
    if __name__ == '__main__':
        test = 3.1415926
        print('这条语句不能被其他程序导入执行')
    
        def f1():
            print('另一个模块中的函数')
    
    import other2
    print(test) # 这条语句会报错
    

    只会输出不在if __name__ == '__main__':缩进下的语句

    hello world

      

    • 一般情况除了函数的声明和类的声明以外,其他的代码都放到这个if里面
    • 包含在if __name__ == '__main__':语句内的代码不会被其他程序导入使用
    • _name_ : 是每个模块自带的属性,是用来保存当前这个模块的名字的.但是当正在执行当前这个模块的时候,这个属性的值是固定的(_main_)

    6. 使用as重命名

    import 模块名 as 新的名字
    from 模块名 import 函数名 as 新的函数名
    一些例子

    import math as m
    print(m.pi)
    from random import randint as rand
    print(rand(5, 9))
    

    3.141592653589793
    7


    二、基本文件操作

        (所有)文件操作流程: 打开文件 > 操作文件(读或写) > 关闭文件

    1. 打开文件:

    open(文件路径,打开的方式,编码方式)

    • 文件路径(必填) > 决定打开哪个文件
    • 打开方式(默认是'r') > 决定打开文件后进行什么样的操作
    • 'r' - 读操作(读出来是字符串)
    • 'rb'/'br' - 读操作(读出来的数据是二进制)
    • 'w' - 写操作(可以将文本数据写入文件中)
    • 'wb'/'bw' - 写操作(将二进制数据写入文件中)
    • 'a' - 写操作(追加)

    编码方式(主要针对文本文件) > 不同的操作系统默认的文本编码方式不同(Windows(GBK),Mac(UTF-8))

    2. 文本文件读操作

    a. 放在工程外面的文件,写绝对路径
    open('H:\Pythonproject\day09\test.txt')
    b. 将文件放到工程目录下的某个位置,写相对路径(相对工程目录):./相对路径 或者 ../相对路径。当py文件直接放在工程目录下,想要使用open打开工程中其他文件使用'../'

    2.1. 打开文件,返回文件句柄(文件代言人)

    f = open('./test.txt', 'r', encoding='UTF-8')

    test.txt
    2.2. 读文件(获取文件内容)

    文件.read(): 获取文件内容并返回
    read(n) ----> n:设置读取长度

        content = f.read(2)
        print(content)
    
        content = f.read()
        print(content)
    

    读文件操作会从上一次读取结束的位置继续读取

    路漫
    漫其修远兮,吾将上下而求索

    2.3. 关闭文件

    • 文件操作完毕后,需要关闭文件
     f.close()
    

    3. 文本文件写操作

    3.1.打开文件

    注意: 以读的方式打开文件,如果文件不存在则会报错
        以写的方式打开文件,如果文件不存在则会创建这个文件

    f = open('./test.txt', 'w', encoding='utf-8')

    3.2. 写操作
    • 'w': 写操作时会清空原本文件中的数据,然后重新写入数据
    • 'a': 在文件内容后添加新写的内容
    f.write('吾将上下而求索')
    

    这时test.txt中的内容变为


    test.txt
    3.3. 关闭文件
    • 文件操作完毕后,需要关闭文件
     f.close()
    

    4. 二进制文件的读写操作

    • 音频,视频,图片文件都是二进制文件
    f = open('./timg.jpg', 'rb')
    image_data = f.read()
    # bytes : python中二进制数据对应的数据类型
    print(image_data)
    f.close()
    # 二进制文件的写操作
    f = open('./img.jpg','wb')
    f.write(image_data)
    f.close()
    

    5. 通过with关键字去打开文件

          with open() as 文件变量名
             文件操作

    • 通过这种方法打开文件会在文件操作结束后会自动关闭文件
        # 读
        with open('./img.jpg', 'rb') as img:
            img_data = img.read()
    
        # 写
        with open('./img1.jpg', 'wb') as img:
            img.write(img_data)
    

    三、json文件

    json文件,就是文件后缀是.json的文件。内容必须是json格式的内容

    json格式:
    1. 内容是字符串
    2. 最外层是字典, 字典里面必须是键值对
    3. 最外层是数组(列表), 数组里面内容必须是数组数据

    • json 是Python中内置的一个模块,专门用来处理json模块的,使用时需要导入
      import json

    1.json文件的读操作

    test.json
    • 直接使用read()去读,获取到的是字符串数据,包含了json中的所有内容
    • load(文件对象): 获取指定json文件中的内容,返回值是json最外层的对应的数据类型
      python与json中的数据类型对照:
      dict > dict
      array > list
      string > str
      number > int/float
      true/false > True/False
      null > None
        # 打开json文件
        with open('./test.json', 'r', encoding='utf-8') as f:
            # content = f.read()
            # print(content, type(content))
            content = json.load(f)
            print(content, type(content),content['成绩'][2])
    

    2. json文件的写操作

    • 写数据
      dump(写的内容, 文件对象)
            with open('./n.json', 'w', encoding='utf-8') as f:
                w_content = [{'name':'派大星', 'age': 12}, {'name':'派大星2', 'age': 12}]
                json.dump(w_content, f)
    
    n.json

    3. json模块中的其他操作

    loads(字符串,编码方式)> > 将指定的字符串,转换成json数据,将字符串转换成列表或列表
    dumps(对象) > > 将对象转换成json字符串,列表/字典转换成json字符串

            content = json.loads('{"name":"派大星", "age": 12}', encoding='utf-8')
            print(content, type(content))
            content = json.dumps({"name":"派大星", "age": 12})
            print(content, type(content))
    

    {'name': '派大星', 'age': 12} <class 'dict'>
    {"name": "\u6d3e\u5927\u661f", "age": 12} <class 'str'>

    相关文章

      网友评论

          本文标题:day09 文件操作 2018-07-26

          本文链接:https://www.haomeiwen.com/subject/uqcimftx.html