文件操作
认识open
1.数据持久化
1)背景:程序中数据默认保存在运行内存,程序运行结束后就会被销毁
如果想让程序中的数据不被销毁,必须将数据通过文件的形式保存到磁盘中
2)数据持久化又叫数据本地化,就是将程序中的数据存储到文件中的过程
3)常见的数据持久化工具:数据库(.db、.sqlite)、json文件、plist文件、csv文件、excel文件、txt文件
2.文件操作 - 操作文件内容
基本操作流程:打开文件 -> 操作文件(读,写) -> 关闭文件
1)打开文件
open(file, mode='r', *, encoding=None)
a.file - 需要打开的文件路径(可以是绝对路径,也可以是相对路径)
注意:相对路径如果是'./'开头,'./'可以省略
b.mode - 文件打开方式;由两组值决定使用的权限和操作文件时数据的类型
第一组(决定权限):r,w,a 第二组(决定数据类型):t,b(打开文本文件用t和b都行,但二进制文件只能用b)
r:只读,文件不存在则报错 w:只写,会先清空原文件,文件不存在不报错并自动创建 a:只写,直接加到内容后面
+:读写,使用方法'r+','w+'或'a+' t:字符串类型 b:字节()二进制类型
使用时第一组必选一个,第二组没选就默认选't',例如:'rt','w','ba'
c.encoding - 文件编码方式(文本文件文字存储时采用的文件字符集);
只有在以t的方式打开文件时才需要设置encoding;
一般设置为utf-8 -> 数字、字母使用1个字节;中文采用3个字节;😀采用4个字节
'gdk' -> 中文采用4个字节
2)操作文件
a.读:功能相关
文件对象.read() - 从读写位置开始读到文件结束(获取整个文件内容),返回值就是文件内容
文件对象.readline() - 从读写位置到一行结束
f.seek(0) #将读写位置移动到文件开头
b.写:功能相关
文件对象.write(数据) - 将指定数据写入指定文件
3)关闭文件 - 文件操作后需关闭文件
文件对象.close
防止忘记关闭文件的方法
1:运行后自动关闭
result = open('files/test1.txt').read()
print(result)
2:在缩进外文件自动关闭
with open('files/test1.txt') as f:
result = f.read()
print(result)
例子:
open('./files/test1.txt')
open('files/test1.txt')
只读
f = open('files/test1.txt', 'r')
f.read() #无错
f.write('abc') #报错
只写 - a
f = open('files/test1.txt', 'a')
f.write('xxx') #无错
f.read() #报错
只写 - a
f = open('files/test1.txt', 'w') #文件清空
f.write('xxx') #无错
f.read() #报错
打开不存在文件
open('files/test2.txt','r') #报错
open('files/test3.txt','w') #无错
open('files/test4.txt','a') #无错
+
f = open('files/test1.txt','r+') #默认+的功能是a
f.read()
输入类型
f = open('files/test1.txt', 'rt') #<class 'str'> xxxazcazc
f = open('files/test1.txt', 'rb') #<class 'bytes'> b'xxxazcazc'
result = f.read()
print(type(result),result)
students = ('擦地', '单位', '得到', '双导')
f = open('files/test1.txt', 'at', encoding='utf-8')
for x in students:
f.write(x)
f = open('C:/文件操作实现/旧文件夹/文本1.txt', 'at')
f.write('六道轮回,杀之不尽!')
try:
f = open('C:/文件操作实现/旧文件夹/文本2.txt', 'wt', encoding='utf-8')
except:
f = open('C:/文件操作实现/旧文件夹/文本2.txt', 'wt')
import os,test
print(test.times())
print(test.add_students())
print(test.add2())