关于字典编辑及文件读写

字典:

和字符串、列表 并列为最常用变量类型!

字典定义格式(前面是key,后面是value):

定义字典中,key是不能重复的,字典的key是无序的

字典取值的两种方法:

print(info[‘id‘])通过key取值

print(info.get(‘addr‘)) 和用key取值的区别时,找不到key时,.get() 会返回空,但是用key取值会报错

print(info.get(‘addr‘,‘beijing‘)) get方法还可以多传一个参数,如果get不到key的话,那么返回xxx,不写的话,默认get不到返回None

字典增加key的两种方法:

info[‘addr‘]=‘beijing‘ #给字典新增一个值;在有这个key的情况下,就是修改这个key的value,没有key的话就是新增(修改字典的唯一方法)

info.setdefault(‘phone‘,138111111) #给字典新增一个值

字典删除的四种方法:

del info[‘addr‘] #删除这个key

print(info.pop(‘addr‘))#pop删除的时候必须指定key,pop方法会返回删除的key对应的value,key不存在,pop删除会报错

info.clear() #清空字典

info.popitem() #随机删除一个元素,不常用

要取到,huoxing 这个值,只能是print(new_infos[0].get(‘yangwn‘).get(‘addr‘))

字典的内置方法:

print(all.keys()) # 返回字典里面的所有keys

print(all.values()) # 获取字典所有的value

print(all.items()) #获取字典的key和value,循环的时候用

直接循环字典,循环的是字典的key

如果想循环的时候同时获取到key和value,那么就要用.items的方法,但是这种方法是把字典转换成列表格式再输出,效率不高,不推荐,上面的“for k in info2  print(info2.get(k))/print (k,info2[k])” 效率更高。

 
dic = {‘stu1‘:‘cc‘,‘stu2‘:‘andashu‘,‘stu3‘:‘niuniu‘}

for k in dic:

print(k,dic[k])#打印key和value的值,推荐使用这种方式,速度快

for k,v in dic.items():

print(k,v)#打印key和value的值,这种方式不推荐,因为会把字典转换成列表,效率不高

info.has_key(‘name‘)  ——python2中判断key是否存在的方法,python3没有

print (‘name‘ in info) ——python3 里直接用in来判断key是否存在

文件的操作

step1: 打开文件

step2: 读取/写入文件

step3: 保存文件

f代表的是这个文件的对象,也叫句柄

文件打开模式有三种:

1、w写模式,它是不能读的,文件如果不存在,会在默认目录下创建一个新文件,如果用w模式打开一个已经存在的文件,会清空以前的文件内容,重新写

2、r读模式,只能读,不能写,而且文件必须存在(不会自动创建文件),windows默认字符集是gbk,要指定字符集,加上encoding=‘utf-8’,之后才可以读

3、a追加模式,也是只能写,在文件末尾添加内容

4、w+,写读模式,用w+模式打开一个已经存在的文件,仍然会清空以前的文件内容,重新写

5、r+,读写模式,只要沾上r,文件必须存在(不会自动创建文件),只要沾上w,肯定会清空原来的文件

在python2 里面也可以用file这个函数去操作这个文件(f=file(‘a.txt,),‘r‘),但是在python3中只能用open,如果在open的时候不指定文件模式,那就默认读模式

6、a+模式下,也可以读写,文件如果不存在,也会在默认目录下创建一个新文件,但是此时默认文件指针在最后,如果想读出内容,要搭配f.seek(0)

类似的方法还有# print(f.readline())#只读文件一行的内容,一条一次只能读一行内容,有多行需要执行多条;

类似还有

注意:直接循环文件对象的话,循环的是文件每一行的内容(空行也算一行),把每行的内容挨个存内存,一次只处理一行,比"f.read()","f.readlines()"(这两种是一次全部读取)快多了!!

7、rb+、wb+、ab+,这种是二进制模式打开或者读取,一些音乐文件、图片等等

修改文件的方式:(其原理是生成一个新字符串new_res,保存了新的操作,同时删除了旧字符串res,把新文件改名成原来的,从而实现修改文件;如果不清空文件内容,直接replace,是在字符串res后面追加)(磁盘里读取,到内存,内存再传给cpu做处理,之后再返回)

同理,上图用f.read() 一次性读取所有内容,数据量一大就会卡死,太慢,搭配for循环读取速度会快(每读取一行内容,都写到新文件里面,之后把旧文件删除,再把新文件改成原文件名,这一方法必须用到两个文件)

改成下图,最后搭配os模块更名即可(先import os)。

文件有打开就有关闭!不关闭的话,别人也打不开了。

.flush()的用法

time.sleep(30),程序等30秒钟,之后再执行(内存写到磁盘里),上图程序虽然在等待中,但已经写入到文件里了。

with的用法

时间: 2024-08-02 15:13:40

关于字典编辑及文件读写的相关文章

python字符串、字典操作,文件读写

一.字符串操作:name = 'aabc,dddd,a'name1 = 'q '# print(name[3]) #字符串也可以取下标# print(name.capitalize()) #把字符串首字母大写# print(name.center(11,'*')) #把name放中间,字符串少于11,则用*补全# #print(name.index('p')) #返回字符串的索引,查不到时会报错,substring not found# print(name.isalnum()) #只能有数字或

自动化day3---Python基础(list、字典、元组、文件读写、字符串格式化)

1.list list的操作 #数组---list arraystus = ['xiaohei','xiaobai','xiaolan']#计算机取值是从0开始的#0 1 2 3#下标 角标 索引 都是指一个东西#走后一个值可以用-1来表示print(stus[2])#取第三个值print(stus[-1])#取第三个值 #list的增删改查#增#append方法是在list末尾增加,一次只能加一个stus.append('ybq')print(stus)#insert方法是在指定位置增加stu

Python基础之字典、元祖、常用字符串方法、文件读写

字典:键值对方式存在.key value stu={ 'name':'zhangsan', 'gender':'femanl', 'age':17}print(stu) #增加字典值 stu["score"]=87stu.setdefault('dictinct','nanshan') #已经存在就不添加 sstu.update(xx) #把一个字典加入到另外一个字典里面 #删字典值 stu.pop('age')del stu['score'] stu.clear() #清空字典 #查

iOS-Senior1-数据处理(文件读写)

1.Model的数据层的理解       1.1沙盒基础 沙盒定义:每个iOS应用程序都会为自己创建一个文件系统目录(文件夹),这个独立,封闭,安全的空间,叫做沙盒. 沙盒特点: 沙盒的文件夹及各个文件夹的作用   查找沙盒的两个方式: 1.点击finder -> 前往(左上角)- > 按住alt键  -> 资源库 -> Developer -> CoreSimulator -> (目标文件夹) 2.搜索 -> 终端 -> 命令行: 显示:defaults

DataPersistence(数据持久化: 文件读写, NSUserDefault, 归档)

 DataPersistence(数据持久化) 1.数据持久化?   数据永久的保存 2.为什么要做数据持久化?   要把之前的操作(存档, 记录等)保存起来 3.为什么数据之前保存不了呢?   以前的数据都存在内存中, 程序一旦终止, 内存就会被收回 4.数据保存到哪里, 才能做数据持久化   把数据存到硬盘里 5.存到硬盘的哪个位置呢?   沙盒机制: iOS会为每一个应用, 单独创建一个文件夹(沙盒), 这个文件夹只允许当前应用访问 6.如何通过代码获取路径? 7.沙盒文件夹又分了多个子文

【原创】python中文编码问题深入分析(三):python2.7文件读写中文编码问题

上一篇文章介绍和分析了python2.7中使用print遇到的中文编码问题的原因和解决方案,本篇主要介绍一下python2.7中执行文件读写可能遇到的编码问题. 1.文件读取 假如我们读取一个文件,文件保存时,使用的编码格式,决定了我们从文件读取的内容的编码格式,例如,新建一个文本文件test.txt, 编辑内容,保存的时候注意,编码格式设定为gb2312,那么使用python读取文件内容,方式如下: f = open('test.txt','r') s = f.read() #读取文件内容,如

【C++探索之旅】第一部分第十课:文件读写,海阔凭鱼跃

内容简介 1.第一部分第十课:文件读写,海阔凭鱼跃 2.第一部分第十一课预告:小练习,猜单词 文件读写,海阔凭鱼跃 上一课<[C++探索之旅]第一部分第九课:数组威武,动静合一>中,我们学习了动态数组和静态数组,也看到其实字符串很类似字符数组(到了之后的第二部分,学习面向对象,我们会知道其实string是一个类). 到目前为止,我们写的程序还比较简单,当然了,因为我们刚开始学习C++嘛.但只要加以训练,我们就慢慢地能够写一些真正的应用了.我们也开始逐渐了解C++的基础知识了,不过缺了很重要的一

大数据【二】HDFS部署及文件读写(包含eclipse hadoop配置)

一 原理阐述 1' DFS 分布式文件系统(即DFS,Distributed File System),指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连.该系统架构于网络之上,势必会引入网络编程的复杂性,因此分布式文件系统比普通磁盘文件系统更为复杂. 2' HDFS 借此,关于GFS和HDFS的区别与联系查看 我于博客园找到的前辈的博客>>http://www.cnblogs.com/liango/p/7136448.html HDFS(Hadoop Dis

【C语言探索之旅】 第二部分第七课:文件读写

内容简介 1.课程大纲 2.第二部分第七课: 文件读写 3.第二部分第八课预告: 动态分配 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语言编写三个游戏. C语言编程基础知识 什么是编程? 工欲善其事,必先利其器 你的第一个程序 变量的世界 运算那点事 条件表达式 循环语句 实战:第一个C语言小游戏 函数 练习题 习作:完善第一个C语言小游戏 C语言高级技术 模块化编程 进击的指针,C语言王牌 数组 字符串 预处理 创建你自己的变量类型 文件读写