Python - 操作文件
open的使用
函数声明:
"""操作文件的流程:
1. 打开文件
2. 读或写文件
3. 关闭文件
打开文件格式:
文件变量 = open(文件名字,访问模式, encoding='utf-8')
注意:
1. 文件名字,访问模式都是字符串类型
2. 如果操作文本文件,encoding='utf-8'为指定utf-8编码,防止不同平台中文乱码
- 这个当做结论记
- 访问模式不是二进制('w', 'r'),打开文件建议指定编码
- 访问模式如果是二进制方式('wb', 'rb'),一定不能指定encoding
3. 'w': 只写方式打开文件,文件不存在创建,文件存在,清空文件内容
4. 'r': 只读方式打开文件(默认),如果文件不存在,报错
5. 'a': 追加模式
"""
# data文件夹要提前准备好,如果不存在会报错
f = open('./data/test.txt', 'w', encoding='utf-8')
f.write('hello world')
f.close()
with open
作用: 操作完文件后不用手动关闭文件,会自动关闭文件
语法:
with open() as f:
pass
读取方法 - read
# 1. 打开文件,只读方式打开,'r'
# 'r': 打开文件,必须存在,不存在,报错崩溃
# 2. 读取文件内容
# 格式: 内容变量 = 文件变量.read(读取的长度)
# 如果read的长度不指定,默认读取全部
with open('./data/test.txt', encoding='utf-8') as f:
content = f.read(2)
print(content) # out: 你好
读取方法 - readline
# readline 方法可以一次读取一行内容, 想要读取完全部内容, 一般会配合循环使用!
with open('./data/test.txt', encoding='utf-8') as f:
while True:
line = f.readline()
if line:
print(line, end='')
else:
break
JSON
"""
json: JavaScript Object Notation, JS 对象简谱,是一种轻量级的数据交换格式。
注意必须使用双引号
dict: python中的一种数据类型, 在python 中json 是一个字符串,但又跟json串不完全一样
json.dumps(dict_data) : 将字典转换为json字符串
json.loads(json_data) : 将json字符串转化为dict对象。注意格式是单引号包含双引号
json.dump(dict_data) : 将字典对象转存在json文件
json.load(f): 将file 中的json读出为dict
"""
class JSONEncoder(object):
"""Extensible JSON <http://json.org> encoder for Python data structures.
Supports the following objects and types by default:
+-------------------+---------------+
| Python | JSON |
+===================+===============+
| dict | object |
+-------------------+---------------+
| list, tuple | array |
+-------------------+---------------+
| str | string |
+-------------------+---------------+
| int, float | number |
+-------------------+---------------+
| True | true |
+-------------------+---------------+
| False | false |
+-------------------+---------------+
| None | null |
+-------------------+---------------+
"""
json样例:下面的代码读取改文件
{
"name": "tom",
"age": 18,
"isMan": true,
"school": null,
"address": {
"country": "中国",
"city": "珠海"
},
"numbers": [2,6,8,9]
}
load() 读取josn文件和 read() 读取json文件
import json
with open('./data/test.json', encoding='utf-8') as f:
data = json.load(f)
print(data)
print(f"data 的类型为{type(data)}")
with open('./data/test.json', encoding='utf-8') as f:
data = f.read()
print(data)
print(f"data 的类型为{type(data)}")
out:
{'name': 'tom', 'age': 18, 'isMan': True, 'school': None, 'address': {'country': '中国', 'city': '珠海'}, 'numbers': [2, 6, 8, 9]}
data 的类型为<class 'dict'>
{
"name": "tom",
"age": 18,
"isMan": true,
"school": null,
"address": {
"country": "中国",
"city": "珠海"
},
"numbers": [2,6,8,9]
}
data 的类型为<class 'str'>
写入json文件
"""
# 1. 导包json
# 2. 准备写入文件的数据
# 3. with open() 只写方式,打开文件, 获取文件对象
# 4. 调用方法写入数据到文件: json.dump(数据源, 文件对象, ensure_ascii=False)
注意:想输出真正的中文需要指定ensure_ascii=False
"""
import json
info = {
'name': '小明',
'has_money': False,
'is_school': None,
'age': 18
}
# ensure_ascii=False :的作用是写入json文件中的中文不使用ascii编码
with open('./data/test2.json', 'w', encoding='utf-8') as f:
json.dump(info, f, ensure_ascii=False)
结果:
dumps
import json
info = {
'name': '小明',
'has_money': False,
'is_school': None,
'age': 18
}
data1 = json.dumps(info)
# out:data 的类型为:<class 'str'>,内容为{"name": "\u5c0f\u660e", "has_money": false, "is_school": null, "age": 18}
print(f"data 的类型为:{type(data1)},内容为{data1}")
data2 = json.dumps(info, ensure_ascii=False)
# out:data 的类型为:<class 'str'>,内容为{"name": "小明", "has_money": false, "is_school": null, "age": 18}
print(f"data 的类型为:{type(data2)},内容为{data2}")
loads
info = '{"name": "张三", "age": 18, "has_money": true, "is_school": null}'
data1 = json.loads(info)
print(f"data 的类型为:{type(data1)},内容为{data1}")
本文来自博客园,作者:chuangzhou,转载请注明原文链接:https://www.cnblogs.com/czzz/p/15783395.html