美文网首页
DAY11 Python基础:files and operati

DAY11 Python基础:files and operati

作者: 十二右 | 来源:发表于2018-06-26 00:18 被阅读0次

    01-file operations 文件操作

    02-modify the read position 修改读取的位置

    03-file write operation 文件写操作

    04-binary file operation 二进制文件操作

    05-json file json文件

    06-student information persistence 学生信息持久化

    07-exception catching 异常捕获


    01-file operations 文件操作

    文件:都有后缀,不同的后缀表示不同的存储方式(保存数据--永久的)
    文本文件(存文字信息) -----.txt, .word, .md等
    二进制文件:视频、音频、图片-----.mp4, ,.mov, .mp3, .png, .jpg, .gif
    可执行文件等:-----.exe, .api, .dmg等

    文本文件、二进制文件、json文件(重点)的操作

    文件操作:对文件进行读写操作
    步骤:(对所有文件操作有效)
    1.打开文件
    2.对文件进行读/写操作(读:获取文件内容;写:修改文件内容)
    3.关闭文件

    python操作文件:

    1.1.打开文件

    open(文件路径,打开的模式 = 'r')
    open函数有一个返回值:返回的就是被打开的文件句柄对象
    文件句柄:就是文件的代言人,对文件句柄对象进行的操作,就相当于对文件进行操作

    文件路径:文件在电脑中对应的地址

    1.1.1.直接写全路径(不推荐使用)

    1.1.2.一般将涉及到的文件放到工程中:

    a.文件和代码对应的.py文件在一个目录下,路径直接写文件名
    b.在工程文件夹下,但是不直接和代码文件在一个目录里面:./放文件的文件夹名字/文件名

    打开的模式:
    'r'->文本读(以读的形式打开,只能获取内容,不能修改内容)
    'w'->文本写(以写的形式打开,只能修改内容,不能获取内容;会覆盖原来的内容)
    'a' ->文本写(以写的形式打开,只能修改内容,不能获取内容;会加到原来内容后面)
    'br'->二进制读
    'bw'->二进制写
    'ba'->二进制写

    1.2.文本文件

    a.打开文件

    f:就是被打开的文件对应的文件句柄
    utf-8:一种文本编码方式,就是使用1-6个字节对unicode进行编码;utf-8就可以编码所有国家的语言对应的字符的文本
    gbk:只支持中文文本编码

    f = open('./test/test.py','r')
    g = open('./test/test2.txt', 'r', encoding='utf-8')
    

    b.读操作

    注意:对同一个文件句柄对象进行读操作,每读一次内容,下次再读的时候,从上次读的结束对位置往下读

    read():获取文件中所有的内容,并且返回
    文本文件读取的结果是字符串

    result = f.read()
    print(result)
    
    # result2 = g.read()
    # print(result2)
    

    read(n):n->指定读取的文本长度(-1:读全部内容,n大于长度:读取所有内容)

    # result2 = g.read(10)
    # print('===',result2)
    

    readline():每次读一行内容

    # result3 = g.readline(1)
    # print('>>>',result3)
    

    练习:1.读取指定文件的所有内容 2.读取指定文件所有内容(一行一行的读)

    # 1.
    # re = g.read()
    # print(re)
    # 2.
    while True:
        re = g.readline()
        # if re == '':
        #     break
        if not re:
            break
        print('>>',re)
    
    # 关闭文件
    g.close()
    

    readlinse():让文件中每一行内容作为列表元素返回

    g = open('./test/test2.txt', 'r', encoding='utf-8')
    
    re = g.readlines()
    print(re)
    

    02-modify the read position 修改读取的位置

    读写文件,每次读完或者写完,下次再读的时候,是接着上次读完的位置往下进行读操作
    避免这个问题的方法:1.重新打开文件,然后再读 2.设置读写位置

    f = open('./test/test2.txt', 'r', encoding='utf-8')
    d读取文件中所有的内容,下次再读就是从文件结束的位置往下读
    print(f.read())
    

    seek(偏移量):偏移量是字节数(一个字母是一个字节,一个中文汉字是两个字节)
    设置读写位置为文件的开始:后边进行读操作的时候,就是从文件开始的位置往下读
    注意:偏移量一般设置为0

    f.seek(0)
    print('>>>', f.read())
    f.close()
    

    03-file write operation 文件写操作

    写操作(修改文件内容):
    1.打开文件
    2.写操作
    3.关闭

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

    write(写的内容):文本文件中写的内容是字符串
    注意:
    'w'->写的时候会覆盖原文件的内容;
    'a'->在原文件内容后面追加内容

    f.write('举头望明月')
    f.seek(0)   # 后面写的时候,会以覆盖前面写的内容的形式去写
    f.writelines(['aaaa', 'dgdsag', 'agag', ' satett'])
    f.close()
    

    04-binary file operation 二进制文件操作

    4.1二进制文件的读

    bytes类:python中的二进制数据对应的类型是bytes -->data

    with open('王虎.jpg', 'br') as f:
        data = f.read()
        print(data)
        print('>>>',type(data)) # value : >>> <class 'bytes'>
    

    4.2二进制文件的写

    'ba':无追加的效果

    with open('./test/new.jpg', 'bw') as f:
        # data需要时bytes类型的数据
        f.write(data)
    

    05-json file json文件

    json文件 :就是后缀是.json的文件,用来存储文本数据(以特殊的语法结构来存储文本信息)
    最外层要么是字典,要么是数组(列表)结构
    里面的数据:字符串、数字、二进制、字典、数组(列表)
    {} ->字典结构
    {
    'name':'a',
    'age':21,
    'sore':34
    }
    []->数组(列表)结构
    [
    190,
    'name',
    'person':{'name':'a','age':21,'sore':34}
    ]

    json文件的读写:python中使用python内置模块json来对json数据进行操作

    import json

    5.1读取json文件中的内容

    json.load(f):读取的结果是字典(dict)或者列表(list)

    with open('./test/ikang.json', 'r', encoding='utf-8') as f:
        # data = f.read()
        # print(type(data))  # value: <class 'str'> 字符串形式的值
        result = json.load(f)
        print(type(result))     #value:<class 'dict'> 这样输出的内容方便操作
        print(result)
    

    5.2json文件的写操作:

    json.dump(写的内容,f):写的内容通常是字典或者列表

    with open('./test/myjson.json', 'w', encoding='utf-8') as f:
        dict1 = {
            'name': 'a',
            'age': 21,
            'sore': 34
        }
        list1 = [
        190,
        'name',
        'person',{'name':'a','age':21,'sore':34}
                ]
        str1 = 'this is a normal string'
        toupl1 = ('a', 100, 0, True)
        json.dump(str1,f, indent=2, ensure_ascii=False)  #indent= 2 -->字符缩进个数,使格式更清晰 ; ensure_ascii=False 是中文数据存到文件里依旧是中文
    

    loads 字符串转换成python里的字典或列表格式
    dumps python里的字典或列表格式转换成字符串

    也可以存字符串 -->“this is a string ”
    也可以存元组,-->在json文件里是列表[]

    06-student information persistence 学生信息持久化

    写一个添加学生多功能,将学生的信息持久化
    1.添加学生
    2.查看学生

    import json
    key_name = 'name'
    key_age = 'age'
    # all_students = {}
    # 创建一个json文件,并取出字典,进行存储
    try:
        with open('student.json', 'r', encoding='utf-8') as f:
            all_students = json.load(f)
    except FileNotFoundError:
        all_students = {}
    # 输入学生信息
    stu_name = input('请输入学生姓名:')
    stu_age = input('请输入学生年龄:')
    stu_dict = {
        key_name:stu_name,
        key_age:stu_age,
    
    }
    all_students[stu_name] = stu_dict
    
    with open('student.json', 'w', encoding='utf-8') as f:
        json.dump(all_students,f)
    

    07-exception catching 异常捕获

    在之前的学习中,由于各种原因,我们的代码会出现各种各样的错误
    这些错误我们叫异常,如果程序出现异常,程序会崩溃,不能继续执行
    但是,有的时候出现异常,我们可能希望由自己解决出现的问题,不希望程序崩溃,就可以捕获异常

    捕获异常:
    格式1:

    try:
        代码块1:需要捕获异常的代码块
    except:         # 所有类型错误的异常都会捕获
        代码块2(出现异常后执行的代码块)
    

    执行过程:先执行代码块1,如果执行代码块1的时候出现异常,就执行代码块2;
    如果代码块1不出现异常,就执行try结构外的其他语句

    # IndexError:
    # FileNotFoundError:
    # ValueError:
    try:
        print(int('12sd'))
        # with open('./test/test1.json', 'r', encoding='utf-8') as f:
        #     pass
    except:
        print("出现异常了")
    print('>>>')
    

    格式2:出现指定类型错误的异常,才捕获

    try:
        代码块1
    except 错误类型列表:
        代码块2
    
    try:
        with open('./test/test1.json', 'r', encoding='utf-8') as f:
           pass
        print(int('abc'))
    except FileNotFoundError:
        print("出现文件找不到异常了")
    # except ValueError:
    #     print('值错误异常')
    finally:
        print('不管有没有异常都有执行')
    print('>>>')
    

    格式3:输出异常内容

    相关文章

      网友评论

          本文标题:DAY11 Python基础:files and operati

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