文章目录
- 文件的读操作
- 代码
- 效果
- 按行读取文件
- 代码
- 效果
- 模拟读取大文件
- 代码
- 效果
- 改版
- 二进制方式操作文件
- 代码
- 效果
- 文件备份
- 代码
- 效果
- 优化
- 文件和目录的操作
- 代码
- 效果
- 批量修改文件名
- 代码
- 效果
- 学生管理系统文件版
- 代码
- 效果
文件的读操作
代码
# 1. 打开文件 f = open('a.txt', 'r', encoding='utf-8') # 2. 读写文件 文件对象.read(n) n 一次读取多少字节的内容,默认不写,读取全部内容 buf = f.read(3) print(buf) # 123 print('-'*30) buf = f.read(3) # print(buf) # 3. 关闭文件 f.close()
效果
按行读取文件
代码
f = open('a.txt', 'r', encoding='utf-8') # f.readline() # 一次读取一行的内容, 返回值是读取到的内容(str) # buf = f.readline() # f.readlines() # 按行读取,一次读取所有行,返回值是列表, 列表中的每一项是一个字符串,即一行的内容 buf = f.readlines() print(buf) buf = [i.strip() for i in buf] print(buf) f.close()
效果
模拟读取大文件
代码
f = open('a.txt', 'r', encoding='utf-8') while True: buf = f.readline() if buf: # if len(buf) > 0 容器,可以直接作为判断条件,容器中有内容,为True,没有数据是False print(buf, end='') else: # 文件读完了 break f.close()
效果
改版
f = open('b.txt', 'r', encoding='utf-8') while True: buf = f.read(5) # f.read(4096) if buf: # print(buf, end='') print(buf) else: break f.close()
二进制方式操作文件
代码
f = open('c.txt', 'wb') f.write('你好'.encode()) # encode() 将str 转换为二进制格式的字符串 f.close() f1 = open('c.txt', 'rb') buf = f1.read() print(buf) print(buf.decode()) f1.close()
效果
文件备份
代码
# 1. 用只读的方式,打开文件 f = open('a.txt', 'rb') # 2. 读取文件内容 buf = f.read() # 3. 关闭文件 f.close() # 4. 只写的方式,打开新文件 f_w = open('a[备份].txt', 'wb') # 5. 将 第 2 步读取的内容写入新文件 f_w.write(buf) # 6. 关闭新文件 f_w.close()
效果
优化
file_name = input('请输入要备份的文件名') # 1. 用只读的方式,打开文件 f = open(file_name, 'rb') # 2. 读取文件内容 buf = f.read() # 3. 关闭文件 f.close() # 根据原文件名,找到文件后缀和文件名 index = file_name.rfind('.') # 后缀 file_name[index: ] # 新文件名 new_file_name = file_name[:index] + '[备份]' + file_name[index:] print(new_file_name) # 4. 只写的方式,打开新文件 f_w = open(new_file_name, 'wb') # 5. 将 第 2 步读取的内容写入新文件 f_w.write(buf) # 6. 关闭新文件 f_w.close()
文件和目录的操作
代码
效果
报以上错误,需要在根目录下创建test文件夹
批量修改文件名
代码
import os def create_files(): for i in range(10): file_name = 'test/file_' + str(i) + '.txt' print(file_name) f = open(file_name, 'w') f.close() def create_files_1(): os.chdir('test') for i in range(10, 20): file_name = 'file_' + str(i) + '.txt' print(file_name) f = open(file_name, 'w') f.close() os.chdir('../') # ../ 上一级目录 def modify_filename(): os.chdir('test') buf_list = os.listdir() # print(buf_list) for file in buf_list: new_file = 'py43_' + file os.rename(file, new_file) os.chdir('../') def modify_filename_1(): os.chdir('test') buf_list = os.listdir() # print(buf_list) for file in buf_list: num = len('py43_') new_file = file[num:] os.rename(file, new_file) os.chdir('../') # create_files() # create_files_1() # modify_filename() modify_filename_1()
效果
学生管理系统文件版
代码
import os # 定义学生列表,保存所有的学生信息 stu_list = [] def show_menu(): print('1. 添加学生') print('2. 删除学生') print('3. 修改学生信息') print('4. 查询单个学生信息') print('5. 查询所有的学生信息') print('6. 退出系统') def insert_student(): # 1. 通过 input 函数获取学生的信息, 姓名, 年龄, 性别 name = input('请输入学生名字:') # [{}, {}, {}] 判断的是字典中的 value 是否存在 for stu in stu_list: if stu['name'] == name: print('----------学生信息存在---------') return # 结束函数的执行 age = input('请输入学生年龄:') gender = input('请输入学生性别:') # 2. 将学生信息转换为字典进行保存 stu_dict = {'name': name, 'age': int(age), 'gender': gender} # 3. 将这个学生字典添加的列表中 stu_list.append(stu_dict) print('==============学生信息添加成功====================') def remove_student(): # 1. 使用 input 获取要删除 /修改/查询 的学生姓名 name = input('请输入要操作的学生的名字:') # 2. 判断学生信息是否存在 for stu in stu_list: if stu['name'] == name: # 3. 学生存在,对学生进行 删除 /修改/查询 操作 stu_list.remove(stu) # return break # 4. 学生信息不存在,直接结束 else: print('***********该学生信息不存在,无法删除**************') def modify_student(): # 1. 使用 input 获取要删除 /修改/查询 的学生姓名 name = input('请输入要操作的学生的名字:') # 2. 判断学生信息是否存在 for stu in stu_list: if stu['name'] == name: # 3. 学生存在,对学生进行 删除 /修改/查询 操作 stu['age'] = int(input('请输入新的年龄:')) # return break # 4. 学生信息不存在,直接结束 else: print('***********该学生信息不存在,无法修改**************') def search_student(): # 1. 使用 input 获取要删除 /修改/查询 的学生姓名 name = input('请输入要操作的学生的名字:') # 2. 判断学生信息是否存在 for stu in stu_list: if stu['name'] == name: # 3. 学生存在,对学生进行 删除 /修改/查询 操作 print(f'姓名:{stu["name"]}, 年龄:{stu["age"]}, 性别:{stu["gender"]}') # return break # 4. 学生信息不存在,直接结束 else: print('***********该学生信息不存在**************') def show_all_info(): if len(stu_list) > 0: for stu in stu_list: print(f'姓名:{stu["name"]}, 年龄:{stu["age"]}, 性别:{stu["gender"]}') # print(stu) else: print('目前没有学生信息') def save(): # 1. 打开文件 f = open('student.txt', 'w', encoding='utf-8') f.write(str(stu_list)) f.close() def load_file(): global stu_list if os.path.exists('student.txt'): f = open('student.txt', 'r', encoding='utf-8') buf = f.read() if buf: stu_list = eval(buf) f.close() def main(): load_file() # 只执行一次 while True: show_menu() opt = input('请输入用来选择的操作编号:') if opt == '1': # print('1. 添加学生') insert_student() elif opt == '2': # print('2. 删除学生') remove_student() elif opt == '3': # print('3. 修改学生信息') modify_student() elif opt == '4': # print('4. 查询单个学生信息') search_student() elif opt == '5': # print('5. 查询所有的学生信息') show_all_info() elif opt == '6': print('欢迎下次使用本系统......') save() break else: print('输入有误,请再次输入') continue input('...... 回车键继续操作.......') main()
效果
猜你喜欢
网友评论
- 搜索
- 最新文章
- 热门文章