day12总结

1.生成式

生成式本质还是生成器,只是写法更简洁

'''
1) 生成式的写法
写法1:
(表达式 for 变量 in 序列)

  1. 展开
    def func():
    for 变量 in 序列:
    yield 表达式
    func()

  2. 说明:
    () --- 固定写法
    表达式 --- 任何语句(除赋值语句),一般是 数据、赋值过的变量、运算表达式、函数调用表达式等等
    这个表达式一般都和后面的变量有联系

写法2:
(表达式 for 变量 in 序列 if 条件语句)

2)展开
def func():
for 变量 in 序列:
if 条件语句:
yield 表达式

gen = func()

  1. 补充:python 的三目运算符
    c语言: 条件语句?值1:值;2 --- 如果条件语句为真,表达式结果为值1,否则为值2
    python语言: 值1 if 条件语句 else 值2

gen1 = (10*x for x in range(5))
print(next(gen1))
print(next(gen1))
print(next(gen1))
print(next(gen1))
print(next(gen1))

用一句话实现交换一个字典中的key和value(面试题)


dict1 = {'a': 1, 'b': 2, 'c': 3}
new_dict = dict((value,key) for key,value in dict1.items())


def dict1(seq):
    dict2 = {}
    for item in seq:
        list1 = list(item)
        dict2[list1[0]] = list1[1]
    return dict2


gen = dict1([])

1. 数据持久化

程序中产生的数据默认是保存在内存中,程序结束数据会自动销毁。

如果希望程序结束后,数据不销毁,那么久需要对这个数据做数据持久化。

将数据保存到文件中,再将文件保存在硬盘中。

2. 文件操作(对文件内容进行操作)

基本步骤:打开文件 -- 操作文件(读/写) -- 关闭文件

'''
1) 打开文件
open(file,mode='r',encoding=None) -- 以指定的方式打开文件,并且返回文件对象

说明:
file : 文件路径,可以写绝对路径也可以写相对路径
绝对路径(一般不用):完整路径 -- E:\pycharm\text\text.txt
相对路径(需要先将文件保存在工程目录下) -- ./text.txt
./ --- 代表当前目录(指的是当前代码文件所在的目录)可以省略
../ --- 代表当前目录的上层目录 -- ../text.txt
.../ --- 代表当前目录上层目录的上层目录

mode : 字符串,文件的打开方式(决定打开文件后能够进行的操作,和操作方式)
'r' --- 以只读的方式打开文件,读出来的数据是str字符串
'w' --- 以写的方式打开文件,写入的数据是字符串(覆盖源文件内容)
'rb'/'br' --- 以读的方式打开文件,读出来是二进制
'wb'/'bw' --- 以写的方式打开文件,写入的数据是二进制
'a' --- 以写的方式打开文件,写入的数据是字符串(在原文件的最后添加内容)

    注意:如果是读的方式打开文件,文件不存在会报错
         如果是写的方式打开文件,文件不存在会新建文件

encoding : 字符,文本编码方式
'utf-8' (mac) 支持中文
'gbk'(Windows) 只支持英文

    注意: 只有文本文件才能设置encoding,二进制操作都不能设置

'''

f保存文件对象,只有打开文件才能得到文件对象

f = open('./text.txt','r',encoding='utf-8')

2) 操作文件

'''
1.读操作 : 文件对象.read() --- 返回文件中的内容
文件对象.readline() --- 读一行内容(从读写位置开始到一行结尾)

'''

a = f.read()
print(a)

设置读写位置在文件开头

f = open('./text.txt','r',encoding='utf-8')
print(f.seek(0))

f = open('./text.txt','r',encoding='utf-8')
print(f.readline())

读不到内容的时候返回的是空串

练习: 读一个本地的txt文件中的内容,一行一行的读 读完为止

print('=================================')
f = open('./text.txt','r',encoding='utf-8')

while True:
content = f.readline()
print(content)
if not content:
break

'''
2.写操作: 文件对象.write(内容) --- 将内容写入指定文件

'w'/'a'1) 内容要求是字符串类型
'wb'/'bw' 内容要求是二进制bytes
'''

f2 = open('./text.txt','a',encoding='utf-8')
f2.write('你好明天22222')

'''
补充:
二进制对应的类型(bytes)
1) 数据来源:a. 将其他类型转换成bytes类型: bytes(int,bool) bytes(str,encordint='utf-8')
整型和字符串都可以转换成bytes
将bytes转字符串 str = str(bytes,encoding='utf-8')
str = bytes.decode(,encoding='utf-8')
b. 以'rb'或者'br'的方式读文件

'''

3.二进制文件读写

图片 视频 音频 等都是二进制文件。这些文件只能以带'b'的方式打开然后操作

image_f = open('lujing','rb')
image_data = image_f.read()
print(image_data)

response = requests.get('链接')

关闭文件

f.close()

1. 打开文件

'''
with open() as 文件对象:
文件的操作

'''

2. 数据持久化

练习:统计程序启动次数

'''
0.先将这个数据保存在对应的本地文件(创建本地文件)
1.程序中需要这个数据的时候 从文件中去读这个数据的值
2.这个数据的值发生改变后要将最新的数据更新到本地文件中
'''

with open('text.txt','r', encoding='utf-8') as num:
count = int(num.read())

count += 1
print(count)

with open('text.txt', 'w', encoding='utf-8') as num:
num.write(str(count))

import json

1.什么是json数据

json是数据格式中的一种

满足json格式要求的数据, 就是json数据

文件内容满足json格式要求, 就是json文件

"""
json格式要求:
1) json格式要求:a. 一个json中有且只有一个数据
b. 这个数据必须是json支持的数据类型的数据
2) json支持的数据类型:
数字类型(number) --- 所有的数字(整数和小数、科学计数法)
字符串(string) --- 必须是" " 双引号引起来的字符集,支持转移字符
布尔(boolean) --- 只有true和false两个值,在json中首字母小写
数组(array) --- 相当于python中的列表,[]
字典(dictionary)--- 相当于python中的字典, {} 在json中的字典,key必须是字符串
null --- 相当于None 空值
"""

2. python数据和json数据的相互转换

python中内置了一个json模块,用来支持json相关操作

"""

  1. json 转 python
    json -------(转)-------- python
    数字 int/float
    字符串 str,有可能将双引号变成单引号
    布尔 bool,true -> True ; false -> False
    数组 list
    字典 dict
    null None

2)
json.loads(字符串,encoding='utf-8') --- 将json字符串转python对应的数据
注意:这个字符串要求 : 字符串中的内容必须是json格式数据(去掉字符串最外面的引号,本身就是一个json数据)


a = json.loads('"abc"',encoding='utf-8')
print(a)
a = json.loads('true',encoding='utf-8')
print(a)
a = json.loads('{"x": 1,"b": 2}',encoding='utf-8')
print(a)

python 转 json
python --------转------- json
int/float shuzi
bool bool(首字母变成小写)
str ste(变成双引号)
list/tuple 数组
dict 字典
None null

json.dumps(数据) --- 将python数据转换成json格式的字符串



result = json.dumps(100)
print([result])
result = json.dumps('bd')
print([result])
result = json.dumps([1,4,5,6])
print([result])
result = json.dumps({'213': 1,'name': '王'})
print([result])


with open('text.txt') as f:
    content = f.read()
    dict1 = json.loads(content)
    print(dict1[age])

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

推荐阅读更多精彩内容