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)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 221,273评论 6 515
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,349评论 3 398
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 167,709评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,520评论 1 296
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,515评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,158评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,755评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,660评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,203评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,287评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,427评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,122评论 5 349
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,801评论 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,272评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,393评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,808评论 3 376
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,440评论 2 359

推荐阅读更多精彩内容