day14 文件操作

    技术2024-07-25  13

    day14 文件操作

    文件操作

    计算机数据的存储

    计算机的存储系统分为 运行内存 和 硬盘 两种: 运行内存:用来保存程序运行过程中产生的数据,程序运行结束后会自动销毁 硬盘: 硬盘是用来保存文件的,保存在文件中的数据就是保存在硬盘中的。除非手动删除,否则数据会一直存在

    数据持久化

    数据持久化就是讲数据以各种形式保存到硬盘中(保存到本地文件中)

    文件操作

    文件操作基本步骤:打开文件 -> 操作文件(读、写) -> 关闭文件

    1.打开文件

    方式一

    open(file, mode='r', encoding=None) - 以指定的模式打开指定文件并且返回一个文件对象 说明: a. file - 文件路径,字符串类型 绝对路径:文件/文件夹的全路径 (一般不写绝对路径) 相对路径:只写文件绝对路径的一部分,另外一部分用特殊符号代替 ./ - 表示当前目录(当前写代码的文件所在的文件夹), 可以省略 ../ - 表示当前目录的上层目录 .../ - - 表示当前目录的上层目录的上层目录 ...... b. mode - 打开方式,字符串类型 第一组:控制操作类型 r - 以只读的方式打开文件(默认值) w - 以只写的方式打开文件(打开前会先清空原文件中的内容) a - 以只写的方式打开文件; 第二组:控制数据类型(文本-str/二进制数据-bytes) t - 操作的数据是文本数据(默认) b - 操作的数据是二进制数据 注意:每一组值只选一个,两组值进行组合使用 c. encoding - 文本编码方式; 直接写 'utf-8' 注意:如果打开方式中带 b , 不能设置 encoding

    后面必须有 文件对象.close()

    方式二

    with open(文件路径, 文件打开方式, encoding=文本编码方式) as 文件对象: 操作文件对象

    无需写close

    2.文件读操作

    1)文件对象.read() - 从文件读写位置开始,读到文件的结尾(默认情况下读写位置在文件开头) 2)文件对象.readline() - 读文本文件的一行内容(从当前读写位置读到一行结束) 3)文件对象.readlines() - 一行一行的读,读完为止。返回的是一个列表,列表中的元素是每一行的内容 # 练习:一行一行的读文件,读完为止 def read_file(file): with open(file, 'r', encoding='utf-8') as f: while True: c = f.readline() if not c: break print(c)

    3.文件写操作

    文件对象.write(内容)

    数据持久化的操作

    a. 数据保存在文件中 b. 需要数据的时候从文件中去读数据 c. 当数据发生改变的时候,对保存数据的文件进行更新 注意:如果以读的方式打开一个不存在的文件,程序会报错!如果是以写的方式打开一个不存在的文件,不会报错并且会自动新建这个文件 open('files/text2.txt', 'r') # FileNotFoundError: [Errno 2] No such file or directory: 'files/text2.txt' open('files/text4.txt', 'a') # 练习:写一个程序统计这个程序启动的次数 with open('files/count', encoding='utf-8') as f: count = int(f.read()) count += 1 print(count) with open('files/count', 'w', encoding='utf-8') as f: f.write(str(count)) 思考:写程序实现添加学生的功能,要求每次运行程序添加的学生,下次还在 def add_student(): name = input('姓名:') with open('files/students.txt', 'a', encoding='utf-8') as f: f.write(name+' ') with open('files/students.txt', encoding='utf-8') as f: print(f.read())
    字典和列表的数据持久化
    1.字典和列表的写操作: 先将列表或者字典转换成字符串 2.字典和列表的读操作:将容器格式的字符串转换成对应的容器型数据类型(eval) eg: students = [ {'name': '张三', 'age': 18, 'tel': '110'}, {'name': '小明', 'age': 20, 'tel': '120'}, {'name': '小花', 'age': 21, 'tel': '119'} ] with open('files/students.txt', 'w', encoding='utf-8') as f: f.write(str(students)) with open('files/students.txt', 'r', encoding='utf-8') as f: content = f.read() print(content) print(type(content)) new_content = eval(content) print(new_content) print(type(new_content)) for item in new_content: print(item) print(type(item))

    json数据

    什么是json

    1)存在的意义 json就是不同编程语言之间进行数据交流的一种通用格式 2)概念 json是一种数据格式:a.一个json有且只有一个数据 b.这个数据是json支持的数据类型的数据 3)json支持的数据类型: 数字类型、字符串、布尔、数组、字典/对象、null(空值) a.数字类型: 所有的数字(19, 90, 802, -23,0.34,3e4) b.字符串:用双引号引起来的文本数据(支持转义字符) - 必须是双引号 c.布尔: 只有 true 和 false 两个值 d.数组: 相当于python的列表, [元素1, 元素2, 元素3,...] e.字典: 相当于Python的字典,{key1:value1, key2:value2,...} 注意:key只能是字符串 f.空值:null(相当于None) # 2.json转python json python 数字类型 数字(int/float) 字符串 字符串(可能会将双引号变成单引号) 布尔 布尔(true->True, false -> False) 数组 列表 字典 字典 空值 null -> None json.loads(字符串) - 将json格式的字符串转换成python对应的数据。(这儿的字符串的内容必须满足json格式) # 3.python转json python json int/float 数字 字符串 变成双引号的字符串 布尔 布尔(True->true, False->false) 列表/元组 数组 字典 字典 None null json.dumps(数据) - 将指定的python数据转换成json格式的字符串
    Processed: 0.014, SQL: 9