美文网首页
day11-总结

day11-总结

作者: RurouniKenshin | 来源:发表于2018-07-26 16:52 被阅读117次

    模块管理函数和类

    1.什么是模块

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

    name = 10
    print(name)
    
    def func1():
        print('====')
    

    other2

    name2 = 100
    print(name2)
    
    def func2():
        print('~~~~~~~~')
    
    if __name__ == '__main__':
        pass
    

    other3

    def func3():
        print('++++++')
    
    
    if __name__ == '__main__':
        name3 = 100
        print(name3)
    

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

    import 模块名(.py文件名)

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

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

    模块名. 的方式去使用模块中的内容
    模块中声明的全局变量都可以使用(普通变量,函数,类)

    import other
    
    print(other.name, other.func1())
    

    4. from 模块名 import 内容1,内容2,内容3...... --> 导入模块中指定的内容

    通过这种方式在使用内容的时候,不用在被导入的变量或函数或类前加模块名

    from other2 import func2
    
    func2()
    

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

    一般情况下,除了函数的声明和类的声明以外,其他的代码都放到这个if里面
    _name_:是每个模块自带的一个属性,用来保存当前这个模块的名字
    但是当正在执行当前模块时,这个属性名字是固定的_main_

    if __name__ == '__main__':
        pass
    

    此中代码不会被其他模块使用

    import other3
    
    other3.func3()
    

    import 模块名 as 新名字
    from 模块名 import 函数名 as 新的函数名

    # 练习,使用一个模块,用来管理所有和形状相关的功能
    # 求两点间的距离,求圆周长,圆面积,矩形周长和面积
    import gh_opration
    
    dis = gh_opration.distance([1, 2], [4, 6])
    print(dis)
    c_zc = gh_opration.circle_girth(4)
    c_mj = gh_opration.circle_area(4)
    print(c_zc, c_mj)
    r_zc = gh_opration.rectangle_girth(3, 4)
    r_mj = gh_opration.rectangle_area(3, 4)
    print(r_zc, r_mj)
    

    gh_opration的函数

    def distance(x, y):
        import math
        return math.sqrt((x[0] - y[0]) ** 2 + (x[1] - y[1]) ** 2)
    
    
    def circle_girth(r):
        return 2 * 3.14 * r
    
    
    def circle_area(r):
        return 3.14 * r ** 2
    
    
    def rectangle_girth(length, width):
        return 2 * (length + width)
    
    
    def rectangle_area(length, width):
        return length * width
    

    文件操作

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

    1.打开文件

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

    编码方式 --> 主要针对文本文件的读写
    (不同的操作系统默认的文本编码方式不同,windows-->gbk,mac-->utf-8)

    2.文本文件读操作

    a.放在工程外的文件,写绝对路径

         open('E:/python-1805/test.txt')
    

    (推荐)
    b.将文件放到工程目录下的某个位置,写相对路径(相对于工程目录):./相对路径 或者../相对路径

    • 当含有打开文件操作的py文件直接在工程目录下,打开文件的路径使用./
    • 当含有打开文件操作的py文件没有直接在工程目录下,打开文件的路径使用../
        # open('./test1.txt')
        # open('./files/test2.txt')
    
        # - 打开文件,返回文件句柄(文件代言人)
    
        f = open('./test1.txt','r',encoding='utf-8')
    
        # - 读文件(获取文件的内容)
        '''
        文件.read():获取文件内容,并且返回
        read(n) --> n 设置读的长度
        '''
        content = f.read()
        print(content)
        # - 关闭文件
        f.close()
    

    3.文本文件写操作

        # - 打开文件
        f2 = open('./files/test2.txt','w',encoding='utf-8')
    
    • 'w':在写的时候会清空文件中原来的内容,然后再往里面写数据
    • 'a':在原文件后追加内容
        # - 写文件
        f2.write('ajsgd氨基酸的38r5')
        # - 关闭文件
        f2.close()
    

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

    4.二进制文件的读写操作(音频,视频,图片文件都是二进制文件)

        f3 = open('./files/timg.jpg','rb')
        # - 读文件
        image_data = f3.read()
        # bytes:python中二进制数据对应的数据类型
        print(type(image_data),image_data)
        # 关闭文件
        f3.close()
    
        f4 = open('./files/new.jpg','wb')
        # - 写操作
        f4.write(image_data)
        # 关闭文件
        f4.close()
    

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

    with open() as 文件变量名:
    文件操作
    在文件操作结束后会自动去关闭文件

    python与json

    json文件(文本),就是文件后缀是.json的文件。内容必须是json格式的内容
    json格式:
    1.内容是字符串
    2.最外层是字典,字典里面必须是键值对
    3最外层是数组(列表),里面必须是数组(列表)

    • json是python中内置的一个模块,专门用来处理json数据的
    import json
    

    1.json文件的读操作

        with open('./files/myinfo.json','r',encoding='utf-8') as o_j:
            context = json.load(o_j)
            print(context)
        print(context['age'])
    

    load(文件对象):获取指定json文件中的内容,返回值的类型是json文件最外层的对应的数据类型

    2.json文件的写操作

        with open('./files/myinfo2.json','w',encoding='utf-8') as o_j2:
            w_context = [{'name':'a1'},{'name':'b1'}]
            # dump(写的内容,文件对象)
            json.dump(w_context,o_j2)
    
    • 重要实例:输入学生的姓名和电话,保存到本地(要求下次启动程序,再添加学生的时候,之前添加的学生信息还在)
    import json
    name = input('name:')
    tel = input('tel:')
    stu = {"name":name,"tel":tel}
    try:
        with open('./files/student.json','r',encoding='utf-8') as o_j3:
            students = json.load(o_j3)
    except FileNotFoundError:
        students = []
    with open('./files/student.json','w',encoding='utf-8') as o_j3:
        students.append(stu)
        json.dump(students,o_j3)
    

    相关文章

      网友评论

          本文标题:day11-总结

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