1.文件读写
f = open('a.txt', 'r', encoding='utf-8') # 打开一个文件,不指定模式时,默认为r f = open('a.txt');需要使用f.close()关闭文件
# f = file('a.txt', 'r', encoding='utf-8') # python2中也可以用open,也可以用file打开文件
# 文件读出来时均为字符串格式
'''
模式 对应方法 说明
r read() 表示只读模式;只能读不能写,打开不存在文件会报错
w write() 表示写入模式;只能写不能读,文件不存在会自动创建;会清空原来文件内容,进行写入;只能写入字符串
a write() 表示写入模式;只能写不能读,文件不存在时会自动创建;不会清空原来文件内容,能够追加写入
r+ read()/write() 表示读写模式;文件不存在时,会报错;可以写,但会从文件开头覆盖写入(因为文件指针在最前)
w+ read()/write() 表示写读模式;可读可写,但读不出东西(因为已清空);文件不存在时,会自动创建;会清空原来文件内容,进行写入;
a+ read()/write() 表示追加读模式;可读可写,但读不出东西(因为文件指针在最后);文件不存在时,会自动创建;不会清空原来文件内容,能够追加写入
'''
with open('a.txt') as file: # 打开文件,此方式不用关闭文件,会自动关闭;file为一个文件对象
file.read()
with open('a.txt') as file1, open('b.txt', 'w') as file2: # 打开多个文件
file1.read()
with open('a.txt') as file: # 读取大文件时,可以用采用循环一行一行读取
for line in file: # 循环文件对象(file)即是一行一行读取
print(line)
f.read() # 读文件全部内容,读到的内容为一整个字符串
f.read(1024) # 读文件中1024大小的内容
f.readline() # 读文件一行内容,读到的内容为一个字符串
f.readline(5) # 读5行
f.readlines() # 读文件全部内容,读到的内容为一个列表
2.文件指针
'''
存在文件指针,当文件读取过一次后,文件指针会相应后移
例如:先执行read再执行readline会读不出东西
read文件指针在最前面,a因为是追加写入,所以文件指针在最后
关闭再打开,文件指针位置会重置
使用seek能够将文件指针移动到最前方,可以实现可读可写并能够读出文件内容的操作
'''
f.seek(0) # 表示将文件指针移动到文件最前方
3.其他方法
l = ['123', '234', '456']
a = 'string'
f.tell() # 查看文件指针的位置
f.write(a) # 写入字符串,若是多个需:write(a+b)
f.writelines(l) # 传入一个list,将list中的每一个元素写入文件中,不光是列表,只要是可以循环的都可以
f.truncate() # 将文件内容从文件指针的位置开始删除
f.read().replace('S', 's') # 将文件中的S替换成s
f.flush() # 将缓冲区的内容立即写入文件
import os # 系统包
os.remove('a.txt') # 删除a.txt文件
os.rename('b.txt', 'a.txt') # 将b.txt文件重命名为a.txt
4.json模块
import json # 导入json模块
d={'zhangsan':18,'lisi':20,'wangwu':30,'张三':1}
open('user1.json','a+',encoding='utf-8') # 使用json后缀能够使文件中的json串有颜色,更好看
json.dumps(d) # 将字典转成json串格式的字符串
json.dumps(d,indent=2) # indent表示格式化json串,2表示每行前面空两格
json.dumps(d,indent=2,ensure_ascii=False) # ensure_ascii=False表示有中文时,不要将中文显示成编码
json.dump(d,f,indent=2,ensure_ascii=False) # f为一个文件,dump能够自动将字典d,写入f文件中
# 想将字典写入文件时,可以先使用json.dumps()将字典转化成json格式的str字符串,就可以使用write写入文件
json.loads(f) # 读取json格式的str字符串,转化为字典类型
# 想要对文件中读出的json串格式的字符串使用字典的一些方法时,可以使用json.loads()方法
json.load(f) # f为一个文件,load能够读取json文件,并转换成字典;文件中只能有一个json字符串,否则会报错
# load方法可以直接从文件读,加载到Python的变量中,并以字典的格式转换。而loads必须对于Python内存中的序列化对象转换成字符串