文件操作和序列化

1.文件的打开和关闭

1.open(file, mode='r',encoding="utf-8")

t 文本模式

b 二进制模式

f = open(文件名或路径) #打开文件
f.close() #关闭文件

encoding编码 utf-8 是针对Unicode的一种可变长度字符编码

f = open(file="test.txt",mode="w",encoding="utf-8")
f.write("你好世界!") # 可以写入任意字符串
f.close()
#因为文件的读取是流式的,像一个水管的阀门一样。每次读取操作的文件的时候,要先打开阀门open(),所以用完也要关闭。就要用f.close(),需要关闭文件以释放资源

2.文件读取

f.read()#读取全部文本是信息,返回一个字符串,也可以读取单个字符

# f = open("test.txt","tr",encoding="utf-8") #以字符模式来读数据
f = open("test.txt","rb") # rb 以二进制模式读取字节数据
print(f.read(2)) # 2表示读取两位字符
f.close()

f.readline()#一行行读取数据

f = open("正则.txt","r",encoding="utf-8")
line = f.readline()
print(line)
f.close()

 f.readlines()#一次读取全部行,返回一个列表,每行是一个元素

f = open("正则.txt","r",encoding="utf-8")
line = f.readlines()# line = ''.join(f.readlines()) 取列表中的字符串
print(line)
f.close(

3.文件内容写入

f.write()将所有字符串一次性写入文本

f = open("路径","a",encoding="utf-8")
f.write('谢谢')
f.close()

f.writelines()一次写入一个列表,每行是一个元素

f = open("test.txt","a",encoding="utf-8")
f.writelines(["1","2","3","4"]) # 将列表保存到文件
f.close()

4.with open()用法

上面说过了f.close的作用,当然有时候还是会忘记写f.close,所以,Python引入了 with 语句来自动帮我们调用 close() 方法

# 自动关闭 
with open("test.txt",encoding='utf-8') as f:  # 默认模式就r 所以可以不用加r
print(f.read())

 5.文件模式操作

    r  以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式

    rb  以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式

   w  打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文                件。

   wb  以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存               在,  创建新文件。

   a  打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新            的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入

2.序列化和反序列化

序列化:把对象转化为可传输的字节序列过程称为序列化。

反序列化:把字节序列还原为对象的过程称为反序列化。

1.pickle和json

pickle.dumps(obj) #把任意对象序列化成一个bytes(字节数)

pickle.loads(bytes_obj) #反序列化

import pickle
hello = 'hello world'
data = pickle.dumps(hello)
print(data)
#结果 b'\x80\x04\x95\x0f\x00\x00\x00\x00\x00\x00\x00\x8c\x0bhello world\x94.'
data1 = pickle.loads(data)
print(data1)
#结果 hello world

 json.dumps(obj, ensure_ascii=True)

 json.loads(s,encoding=None)

import json
data = {
    'hello':123,
    'nihao':'word'
}
str_json = json.dumps(data)
print(str_json,type(str_json))
#结果  {"hello": 123, "nihao": "word"} <class 'str'>
dicts = json.loads(str_json)
print(dicts,type(dicts))
#结果  {'hello': 123, 'nihao': 'word'} <class 'dict'>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值