新内容:
一、概述:
1、内存 存不长久
2、 硬盘 数据的持久化
3、文件操作----数据的持久化的一种
4、全栈开发:框架类
二、初识文件处理
1、文件中读取出来的所有东西都是字符串
流程:找到文件——打开文件——操作——保存——关闭
(1)以写“w"”的方式打开任何文件都会将原来的内容清空,特别小心对待
命名规则: f file f_obj f_handle fh
writable readable 的使用
f=open("你好a","w",encoding="utf-8") #f:文件操作符,文件句柄,文件操作对象 #文件操作符 习惯叫 f file f_obj f_handle fh #open 打开文件是依赖操作系统的提供的途径 #操作系统有自己的编码,open 在打开文件的时候默认使用操作系统的编码 #win: gbk mac/linux :utf-8 print(f.writable()) #判断文件是否可写 print(f.readable()) #判断文件是否可读 f.write("122432") #写文件时需要写数字,需要把数字转换成字符串 f.write(" aksjf") #文件的换行 f.write("好好学习") #utf-8 unicode gbk f.close() #使用完文件之后 一定要关闭
(2)如何找到文件
在相同文件夹下可以直接执行文件名
在不同文件夹下,直接执行路径
如果以写的方式打开一个文件,文件不存在则创建一个新的文件,存在的文件之前的内容会被清空
在获取路径之前加r 可使失效 和\ 的作用相同(文件的路径,需要取消转译的方式表示:1、\ 2、r)
f=open(r"C:UsersAdministratorDesktop","w",encoding="utf-8") #文件路径,操作模式,编码 f.write("hahahha") f.close()
(3)关闭文件详情
1、操作系统级别的关闭文件资源: f.close() 必须要写的
2、del f 主动释放了一个python程序内存中的变量 可写可不写
2、读取文件
第一种方法:read 一次性读出文中所有的内容
第二种方法 read(n)指定读 n个单位
(如果第一种方法和第二种方法同是使用,则第二种方法不会被读取,因为光标已经移动完毕)
f=open("你好",encoding="utf-8") # 第一种: content=f.read() print(content) # 第二种: content1=f.read(5) print(content1)
第三种方法:readline 按照行读,每次执行readline 都会往下读一行
strip()可以去掉空格,制表符,换行符 一个print 相当于一个
第四种方法: readlines 将文中的每一行作为列表中的每一项返回一个列表
f=open("你好",encoding="utf-8") # 第三种 content=f.readline() print(content.strip()) # 第四种 content1=f.readlines() print(content1) f.close()
第五种 方法:利用for循环 (最常用的)
f=open("你好",encoding="utf-8") # 第五种 for l in f: print(l.strip()) f.close()
3、例题 :购物车
价格文件
apple 10 3 tesls 1000000 1 mac 3000 2 lenovo 30000 3 chicken 10 3 computer 6000 5 computer 6000 5
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
f=open("你好",encoding="utf-8") goods_list=[] for line in f: if line.strip(): #只显示有内容的行 goods_dic={"name":None,"price":None} line=line.strip() goods_lst=line.split() goods_dic["name"]=goods_lst[0] goods_dic["price"]=goods_lst[1] goods_list.append(goods_dic) print(goods_list) f.close()
4、追写 appending
f=open("你好","a",encoding="utf-8") f.write(" computer 6000 5") f.close()
5、 (1) r+ 可读可写
1、先读后写,写的是追写
2、先写后读:从头开始写
f=open("你好a","r+",encoding="utf-8") content=f.readline() print(content) f.write("123adsa") #追写 f.close()
f=open("你好a","r+",encoding="utf-8") f.write("123adsa") #先清空再追写,运行一次增加一次 content=f.readline() print(content) f.close()
w+ 可写可读:一上来文件就清空了
尽管可读1)但是你读出来的内容是你这次打开文件新写入的
2)光标在最后需要你主动移动光标才可读(使用 seek(0))
f=open("你好a","w+",encoding="utf-8") f.write("123adsa ") f.write("aaaaaa") f.seek(0) print(f.read()) f.close()
a+ 追加可读 在python中没有改文件这个功能
f=open("你好a","a+",encoding="utf-8") f.write("123adsa ") f.write("aaaaaa") f.seek(0) print(f.read()) f.close()
(4)一般情况下:文件操作,要么读,要么写,很少会使用读写,写读同时使用(因为光标的移动会导致读写文件混乱)
常用的:r w a
rb wb ab 不需要指定编码(因为是以二进制的形式读写)
b一般在读写文件时使用(文件的上传和下载),例如图片、视频等