一.文件操作
1.数据持久化(数据本地化)
- 计算机内存分为硬盘和运行内存。当运行程序的时候系统会自动在运行内存中开辟空间保存运行过程
中产生的数据;但是当程序运行的结束的时候,这个内存空间会自动销毁,所有数据也会销毁。如果
希望数据一直存在,需要将数据存在硬盘中。
存储到本地文件中的数据,就是存储在硬盘中的数据,就能持久化。编程中常用的文件有:txt文件、二进制文件
(图片、视频、音频、压缩文件)、json文件、plist文件、数据库文件(.db,.sqlite)
2.文件操作 - 文件内容的操作
- 1.基本步骤:打开文件 - 读/写操作 - 关闭文件
- 1)打开文件
open(file, model='r', encoding=None) - 打开指定文件,返回文件对象
file - 需要打开的文件路径,可以是绝对路径也可以是相对路径
绝地路径:文件在电脑的全路径
相对路径:./(当前目录-当前py文件所在的目录),可以省略
../(当前目录的上层目录)
.../(当前目录的上层目录的上层目录)
model - 字符串,文件打开方式;打开方式决定了打开文件后支持的操作和操作的数据的类型
'r':默认值,只读;读出来的数据是字符串类型
'w':只写;只能将字符串写入文件;(先删除原文件中的内容再写)
'rb'/'br':只读;读出来的数据是二进制数据(bytes)
'wb'/'bw':只写;只能将二进制数据写入文件;(先删除原文件中的内容再写)
'a':只写;只能将字符串写入文件;(保留原文件内容追加)
'ab'/'ba':只写;只能将二进制数据写入文件;(保留原文件内容追加)
encoding - 设置文件内容的编码方式,固定写:'utf-8';只针对文本文件有效
注意:1)只有文本操作才能设置编码方式
2)文本文件在读和写的时候的编码方式必须一致
windows默认的是'gbk' - 2)操作文件
- a.读操作 - 获取文件中的内容
文件对象.read() - 会返回文件中的内容
文件对象.readline() - 读一行内容(从读写位置到一行结尾) - 3)关闭文件
文件对象.close()
绝对路径
open('/newclass/语言基础/文件操作和异常捕获/files/test1.txt')
相对路径
1.打开文件
f = open('./files/test1.txt', 'r', encoding='utf-8')
2.获取文件中的内容
对象.read() - 获取文件中所有的内容
contend = f.read()
print(contend)
3.移动读写位置(移动光标)
对象.seek(0) - 将读写位置移动到文件开头
f.seek(0)
print(f.readline())
4.关闭文件
- 一行一行的读,读完为止
f = open('./files/test1.txt', 'r', encoding='utf-8')
while True:
contend = f.readline()
if not contend:
break
print(contend)
f.close()
- 写操作:文件对象.write(写的内容) - 将指定的内容写入文件中
二.数据持久化
数据持久化:a.需要持久化的数据保存在本地文件中
b.需要数据的时候去文件中读数据
c.数据发生改变后将最新的数据写入文件中
- 统计当前程序运行的次数
f = open('files/num.txt', 'r', encoding='utf-8')
num = int(f.read())
f.close()
num += 1
print(num)
f = open('files/num.txt', 'w', encoding='utf-8')
f.write(str(num))
f.close()
- 打印账号的余额
f = open('files/text2.txt', 'r', encoding='utf-8')
money = int(f.read())
f.close()
value = int(input('1.存钱 2.取钱:'))
if value == 1:
money1 = int(input('金额:'))
f = open('files/text2.txt', 'w', encoding='utf-8')
f.write(str(money+money1))
f.close()
elif value == 2:
money2 = int(input('金额:'))
f = open('files/text2.txt', 'w', encoding='utf-8')
f.write(str(money-money2))
f.close()
f = open('files/text2.txt', 'r', encoding='utf-8')
print(money)
f.close()
三.二进制文件
1.常见的二进制文件:图片文件、视频文件、音频文件、压缩文件
- 不是只有二进制文件才支持'b'操作(rb,wb,ab),但是二进制文件只能采用'b'操作
注意:所有带'b'的操作都不能设置encoding
f = open('./files/p1tankU.gif', 'rb')
content = f.read()
f.close()
f = open('files/new.gif', 'wb')
f.write(content)
f.close()
2.文件不存在
- 如果以读的方式打开一个不存在的文件,程序会报错
如果以写的方式打开一个不存在的文件,程序不会报错,并且会创建该文件
3.打开文件的简写
- 1)语法
with open(文件路径, 读写方式, encoding=编码方式) as 文件对象:
文件域(操作文件) - 2)说明
以这种方式打开文件,在文件域结束后,文件会自动关闭
with open('files/test1.txt', 'r', encoding='utf-8') as f:
print(f.read())
四.json数据
1.什么是json数据 - 满足json格式的数据
- 1)json格式:a.一个json有且只能有一个数据 b.这个数据必须是json支持的数据类型对应的数据
- 2)json支持的数据类型
数字类型 - 所有的数字对应的类型,支持科学计数法;100,0.23,-23,3e4
字符串 - 使用双引号引起来的字符集,支持转义字符和编码字符,例如:"abc"
布尔 - 只有true和false两个值
数组 - 相当于Python中的列表
字典 - 相当于Python中的字典,注意:key只能是字符串
null - 相当于Python中的None,表示空
2.json转Python
- 1)转换关系
json python
数字类型 int或者float
字符串 字符串,双引号可能会变单引号
布尔 bool, true -> True
数组 list, ["abc", "true"] -> ['abc', 'True']
字典 dict
null None - 2)方法
loads(字符串) - 将json格式的字符串转成python数据
注意:字符串的内容必须是json格式的数据
result = json.loads('123') # 123
result = json.loads('"abc"') # abc
result = json.loads('true') # True
result = json.loads('[false, 22]')
3.python转json
python json
int/float 数字
str 字符串,单引号变成双引号
bool 布尔,True -> true
list/tuple 数组
dict 字典
None null
- 2)方法
dumps(数据) - 将数据转换成json格式的字符串
result = json.dumps(100)
result = json.dumps('faf')
result = json.dumps([22, 'sadas', [23, 'af']])
print(result)
result = json.dumps({'name': '小明', 'age': '15'})
print(result)
result = json.loads('{"name": "\u5c0f\u660e", "age": "15"}')
print(result)
网友评论