python对文件读取的方式_python 文件读写方式

一、普通文件读写方式

1、文件路径书写格式:3种

path1 = 'C:/Users/Hjx/Desktop/text.txt' #单个反斜杠

path2 = 'C:\\Users\\Hjx\\Desktop\\text.txt' #两个斜杠:\\(第一个\是转义符)

path3 = r'C:\Users\Hjx\Desktop\text.txt' #r 用于防止字符转义

2、读取文件信息:

1)推荐的方式

with open('/path/to/file', 'r') as f:

content= f.read()

2)普通方式

f = open('C:\\Users\\Hjx\\Desktop\\text.txt', 'r', encoding = 'utf8')

f.read()#读取全部

f.seek(0) #光标返回到起始位

f.read(2) # f.read(n) :读取n个字符

f.readline()#一次性读取一行

f.readline(n) #读取该行的前n个字符

f.close()

for line inf.readlines():print(line)

demo:

#demo:将数据清洗存为json格式:[{'name':'...', 'lng':'...', 'address':'...'}]

path = r'C:\Users\test.txt'f= open(path, 'r', encoding = 'utf8')

m= [] #用于存放数据

for line inf.readlines():

st= line.split(":") #eg :st → ['name','lng','address']

name =st[0]

lng= float(st[1])

ad= st[2] #去除多余空格

data = [['name',name],['lng',lng],['address',ad]] #做成嵌套列表

m.append(dict(data)) #将data转成字典格式,并追加到列表m中

f.close()

print("数据转换完成")

3、写入文件中:

with open('/Users/michael/test.txt', 'w') as f:

f.write('Hello, world!')

注意:

1、文件是ANSI编码,读写文件时 encoding 则采用'gbk'的编码方式

2、如果是要读取二进制文件,比如图片、视频等等,用'rb'或'wb'模式打开文件:

>>> f = open('/Users/michael/test.jpg', 'rb')>>>f.read()'\xff\xd8\xff\xe1\x00\x18Exif\x00\x00...' #十六进制表示的字节

3、要读写非ASCII编码的文本文件,就必须以二进制模式打开,再解码。比如GBK编码的文件

>>> f = open('/Users/michael/gbk.txt', 'rb')>>> u = f.read().decode('gbk')>>>u

u'\u6d4b\u8bd5'

如果每次都这么手动转换编码比较麻烦,Python还提供了一个codecs模块帮我们在读文件时自动转换编码,直接读出unicode:

importcodecs

with codecs.open('/Users/michael/gbk.txt', 'r', 'gbk') as f:

f.read()#u'\u6d4b\u8bd5'

二、json文件读写方式

1、保存json文件:

model={...} #数据

with open("./hmm.json",'w',encoding='utf-8') as json_file:

json.dump(model,json_file,ensure_ascii=False)

2、读取json文件:

model={} #存放读取的数据

with open("./hmm.json",'r',encoding='utf-8') as json_file:

model=json.load(json_file)

三、pickle 模块存取数据

pickle提供了一个简单的持久化功能。可以将对象以文件的形式存放在磁盘上。

python的pickle模块实现了基本的数据序列和反序列化

pickle.dump():通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储

pickle.load():通过pickle模块的反序列化操作,我们能够从文件中创建上一次程序保存的对象。

即:将对象信息序列化操作后存于文件中,再通过反序列化操作将文件中的数据读取出来并还原成对象格式

1、存储:pickle.dump(obj, file, [,protocol])

importpickle

data= {'a':[1,2,3,4], 'b':('string','abc'), 'c':'hello'} #字典对象

pic= open( 'C:\\Users\\Hjx\\Desktop\\data.pkl', 'wb')#以二进制来存储:rb, wb, wrb, ab

pickle.dump(data,pic)

pic.close()#将一个字典数据存成了pkl文件

2、读取:pickle.load(file)

#读取:pickle.load(file)

f= open( 'C:\\Users\\Hjx\\Desktop\\data.pkl', 'rb')

st=pickle.load(f)print(st)#直接读取pkl文件内的数据,该数据为一个字典

#输出:

{'c': 'hello', 'a': [1, 2, 3, 4], 'b': ('string', 'abc')}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值