day17fileOperation

1.数据的本地化和数据持久化

通过文件将数据保存到硬盘中,通常有:
数据库文件,txt、json、plist、xml、png文件mp3/mp4

2.文件操作 - 文件内容操作

基本步骤:打开文件 --> 操作文件 --> 关闭文件

  • 1)打开文件
    open(file, mode, encoding=None)- 以指定方式打开文件,并返回文件句柄
    file -- 字符串。需要打开的文件路径
    ./ -- 当前文件所在目录(./可以省略)
    ../ -- 当前文件的上层目录
    mode -- 字符串 ,打开方式
    r -- 默认值,以只读的方式打开文件
    w-- 以只写的方式打开文件
    a -- 以追加写的方式打开文件
    rb/br -- 以只读的方式打开文件(读取到的数据为2进制)
    wb/bw -- 以写的方式打开文件(jiang2进制数据写入文件 )
    '+ -- 可以读写
  • 2)文件读操作
    文件对象.read() -- 从读写位置开始,读到文件结束,并返回字符串(读写位置默认在文件开头)
    文件对象.seek(字节数) -- 将读写位置移动到指定的地方
f = open('./files/test.txt', 'r, encoding='utf-8')
result = f.read
print(result)
f.seek(0)    #将读写位置移动到句柄开头
f.close()
  • 3)readlines:一行一行读取所有数据,并保存为列表
f = open('./files/test.txt', 'r, encoding='utf-8')
print(f.readlines())
    f.close()
  • 4)文件写操作
    文件对象.write(写的内容) -将指定的内容写入指定文件中返回被写入内容的长度
 f = open('./files/test.txt', 'w', encoding='utf-8')
    result = f.write('abc')
    print(result)

    # 关闭文件
    f.close()
注意,如果以读的方式打开一个不存在的文件,会报错,而以写的方式打开一个不存在的文件则会在对应位置创建该文件
3. 二进制文件操作

rb 读的时候获取到的是二进制的数据(byte)
wb 写的时候写入的内容 要求是二进制文本内容
普通文本文件可以通过二进制的形式去打开,影响的只是获取到的内容,和写进去的数据类型
二进制文件只能以二进制形式打开(例如:图片,视频,音频)
二级制打开文件时,不能指定encoding参数

4. 二进制数据

一般二进制数据都是通过网络请求获取,或者通过读取本地二进制文件得到

  • 1)将字符串转换为二进制
    bytes(字符串,编码方式)
    字符串.encode(编码方式)

2)将二进制转换成字符串
二进制数据decode(编码方式)

5.文件上下文

with open(文件路径,打开方式,编码方式) as 文件对象
操作文件
文件操作完成后自动关闭

with open('./files/sss.txt', 'r', encoding='utf-8') as f1:
print(f1.read)
#普通文件以二进制打开
f = open('./sdf.txt', 'rb'')
result = f.read()
print(result,type(result))
f = open('./dfs.txt', 'wb')
f.write(bytes('ssd', encoding=utf-8)
#二进制文件的打开
 f1 = open('./files/luffy4.jpg', 'rb')
 reslut = f1.read()
 print(reslut, type(reslut))
 f2 = open('./files/aaa.jpg', 'wb')
 f2.write(reslut)
6.json数据

1)满足json格式的数据就是json数据

json格式: 一个json有且只有一个数据,这个数据必须满足json支持的数据类型
json支持的数据类型:

  • 数字(number) - 包含所有的数字(整数和小数), 支持科学计数法 如100 23.4, 3e3
  • 字符串(string) - 用双引号括起来的字符集可以是转译字符和编码字符
    例如: "abc", "你好", "12334","abc\n123", "\u4e01abc"
  • 布尔(bool) - true/false
  • 数组(array)- 相当于python中的列表
  • dictionary - 相当于python中的字典{"a": 123}
    -null - 相当于None
7.使用json

1)解析json数据(获取到json数据后将json中想要的数据解析出来) -- 前端

构造json数据
python中有一个内置库,专门负责json数据的处理

  • 1.1) 将json数据转换成python数据
json数据 python数据
number int/float
string str, 可能会出现将双引号变成单引号
boolean bool, true -> True; false -> False
array list
dictionary dict
null -> None
  • 1.2)loads方法
    json.loads(字符串,encoding = 'utf-8') - 解析json数据,返回python数据
    字符串要求:字符串中内容本身就是一个json数据(去掉引号后,是一个json类型的数据)
result = json.loads('"abc"', encoding='utf-8')
result = json.loads('100.23', encoding='utf-8')
  • 2.1) python 转json
python数据 json数据
python数据 json数据
int/float number
bool boolean,True --> true, False --> false
str string, 将单引号变成双引号
list、tuple array
dict dictionary
空值 None -> null

json.dumps(python数据) --> python数据转化为对应json的字符串

result = json.dumps(100)
print(type(result), result)

result = json.dumps('abc')
print(type(result), result)    # '"abc"'

result = json.dumps(True)
print(type(result), result)     # 'true'

result = json.dumps([12, 'abc', [1, 2], True])
print(type(result), result)     # '[12, "abc", [1, 2], true]'

result = json.dumps((12, True, 'abc', (1, 2)))
print(type(result), result)     # '[12, true, "abc", [1, 2]]'

#####3json 文件操作
```python
with open('./sda.txt', 'r',encoding='utf-8') as f:
#得到python数据
result = json.load(f)

with open('./sdsd.json', 'w', encoding = 'utf-8' as f:
json.dump([100, 'abc], f)

你可能感兴趣的:(day17fileOperation)