注意事项:若为二进制文件,如图片、视频等使用rb、wb、ab方式进行打开
文件打开方式:f = open("文件名") 文件关闭方式:f.close() 实例:实现文件的拷贝 代码:
f = open("westos",'r') file = f.read() f.close() f1 = open("westos1",'w') f1.write(file) f.close()运行结果 westos内容:
westos1内容:
1.读
read:读取的指定字节,默认1024readline:读取文件的一行内容readlines:读取文件的所有内容,返回一个列表2.写
write:从指针所在位置写入,写入是字符串内容writelines:将列表里面的每个元素写入文件中3.定位
tell:指针当前所在位置seek(offset,from):指针移动位置(offset为偏移量,from=0为移动指针到文章开头,from=1指代当前位置,from=2为移动指针到文章结尾)实例:移动指针
f = open("westos",'a+') f.write("\nnew line") content = f.read() print(content) print("当前指针的位置是:",f.tell()) f.seek(0,0) print("当前指针的位置是:",f.tell()) content = f.read() print(content) f.close()运行结果
with语句:python中的with语句适用于对资源进行访问的场合,保证不管处理过程中是否发生错误或者异常都会自动执行规定的“清理”操作,释放被访问的资源,比如有文件读写后自动关闭、线程中锁的自动获取和释放等。使用该语句的时候文件可以进行for循环。 实例:按行读取文件 代码:
with open("westos",'r') as f: line = 0 for i in f: line += 1 print("第%s行的内容为:"%(line),i)运行结果:
os:语义为操作系统,处理操作系统相关的功能,可跨平台。比如显示当前目录下所有文件/删除某个文件/获取文件大小
os模块指令功能os.name()查看当前电脑的操作系统(nt:当前是windows系统,posix:当前是linux系统)os.uname()查看当前操作系统的详细信息,在windows中需要加入platform模块os.path.isabs()判断是否为绝对路径os.path.abspath()生成绝对路径os.path.join()返回一个绝对路径:当前目录绝对路径+文件名/目录名os.path.basename()获取文件名os.path.dirname()获取目录名os.makedirs()递归创建目录os.mkdir()创建目录os.rmdir()删除目录os.mknod()创建文件os.remove()删除文件os.rename()文件重命名os.path.exists()判断文件是否存在os.path.splitest()分离后缀名os.path.split()查看当前系统信息
import platform import os print(platform.uname())运行结果:
python类型数据和JSON数据格式的互相转换 从JSON到Python:decode(load或loads) 从Python到JSON:encode(jump或jumps) 注意事项: 1.python中的str类型到JSON中转为unicode类型,None转为null,dict对应object 2.python中的集合不能转成json格式 实例1.将python数据类型转换为json字符串 代码:
langs = { "c语言":{ "2020-8":20, "2020-9":25, }, "python":{ "2020-8":30, "2020-9":18, }, } import json result = json.dumps(langs,ensure_ascii=False) print(result)运行结果: 实例2.将json的格式转换成python,并统计c语言和python的热度值 代码:
import json with open("langs.json",'w',encoding='utf-8') as f: json.dump(langs,f,indent=4,ensure_ascii=False) print("存储完成") with open("langs.json",encoding='utf-8') as f: lang = json.load(f) print(langs) for name,info in lang.items(): sum_value = 0 for key,value in info.items(): sum_value += value print("%s的热度值为:"%(name),sum_value)运行结果: 作业: 1.读取一个文件,显示除了以#为开头行以外的所有行 代码:
with open("#",'r',encoding='utf-8') as f: for i in f: if not i.startswith('#'): print(i)文件内容: 运行结果: 2.学生信息管理系统(文件版) (1)必须使用自定义函数,完成对程序的模块化 (2)学生信息至少包含:姓名、年龄、学号,除此以外可以适当添加 (3)必须完成的功能:添加、删除、修改、查询、退出 代码:
import os import json def add(num): if num not in gl.keys(): name = input('请输入学生姓名:') age = int(input('请输入年龄:')) gl.update({num:{'姓名':name,'年龄':age}}) clear(gl) print("学号是%s的学生信息已添加成功"%(number)) else: print("学号是%s的学生信息已存在"%(number)) def delete(num): if num in gl.keys(): gl.pop(num) clear(gl) print("学号是%s的学生信息已被删除"%(num)) else: print("学号是%s的学生信息不存在"%(num)) def change(num): if num in gl.keys(): ch = input("请输入要修改的学生信息(姓名|年龄):") content = input("修改该学生的%s为:"%(ch)) gl[num].update({ch:content}) clear(gl) print("学号是%s的学生信息更改成功"%(num)) else: print("学号是%s的学生信息不存在"%(num)) def look(num): if num in gl.keys(): print(gl[num]) else: print("学号是%s的学生信息不存在" % (num)) def clear(d): with open('学生信息管理','w') as f: json.dump(d,f,indent=4,ensure_ascii=False) while True: put = input("请选择想要使用的功能(添加|删除|修改|查询|退出):") if os.path.exists("学生信息管理"): if os.path.getsize("学生信息管理")!=0: with open("学生信息管理",mode='r') as f: gl = json.load(f) else: gl = {} else: gl = {} if put == '退出': break elif put == '添加': number = input('要添加的学生学号:') add(number) elif put == '删除': number = input('要删除的学生学号:') delete(number) elif put == '修改': number = input("请输入要修改的学生学号:") change(number) elif put == '查询': number = input("请输入要查询的学生学号:") look(number)运行结果: