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'>