Python-文件读写&文件指针&json模块

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内存中的序列化对象转换成字符串

猜你喜欢

转载自www.cnblogs.com/huoxn/p/10900527.html
今日推荐