文件读写
1、先打开文件
2、读取/写入内容
3、保存文件
 
文件的open模式有三种
1、w 写模式,它是不能读的 只要用w打开文件,文件中的东西都会被清空
w+, 写读模式,只要沾上w 就会清空原来的文件
2、r 读模式,只能读,不能写,而且文件必须存在
r+ 读写模式,只要沾上r 文件必须存在 不存在就会报错
3、a 追加模式,也能写 这种模式,打开文件后直接定位到文件的末尾,然后开始追加,所以会用到 .seek(0)得方法
a+
rb+ wb+
 
f=open('a.txt222','a+',encoding='utf-8')
f.seek(0) #a+模式,指针定位在末尾,使用.seek(0)可以将指针定位带最前面
print(f.read()) #read:返回的是字符串 读取的是整个文件 效率低
print(f.readlines()) #readlines:返回的是一个列表 通常用来读取配置文件 read和readlines读取的是整个文件 效率低
f.seek(0)
print(f.readline()) #readline方法:返回的是字符串 每次只读取一行数据 效率高
 
如果文件很小,read()一次性读取最方便;如果不能确定文件大小,反复调用read(size)比较保险;如果是配置文件,调用readlines()最方便:
 
f=open(‘a.txt’)
如果在打开文件的时候不指定模式,那就是默认读模式
 
f=open('a.txt','r',encoding='utf-8')
print(f.read())
 
#直接循环的时候循环的是文件的每一行 比read和readlines的效率高些
count=1
for line in f:
print('第%s行:%s'%(count,line))
count+=1
 
 
--------------------------------------------------------------
write #写文件的的时候,只能是写字符串
f.writelines(['123','456','789']) #可以吧列表写到里头 list每个元素是文件的每一行
# f.write('jmysdfsdf')#write是写内容,只能写字符串
 
 
调用read()会一次性读取文件的全部内容,如果文件有10G,内存就爆了,所以,要保险起见,可以反复调用read(size)方法,每次最多读取size个字节的内容。另外,调用readline()可以每次读取一行内容,调用readlines()一次读取所有内容并按行返回list。因此,要根据需要决定怎么调用
 
三、用linecache读取文件内容(测试过1G大小的文件,效率还可以)
str = linecache.getlines(filename)
str为列表形式,每一行为列表中的一个元素
------------------------------------
其他操作:
  f = open('file.txt','r+',encoding='utf-8')#encoding参数可以指定文件的编码
            f.readline()#读一行
            f.readable()#判断文件是否可读
            fr.writable()#判断文件是否可写
            fr.encoding#打印文件的编码
            f.read()#读取所有内容,大文件时不要用,因为会把文件内容都读到内存中,内存不够的话,会把内存撑爆
            f.readlines()#读取所有文件内容,返回一个list,元素是每行的数据,大文件时不要用,因为会把文件内容都读到内存中,内存不够的话,会把内存撑爆
            f.tell()#获取当前文件的指针指向
            f.seek(0)#把当前文件指针指向哪
            f.write('爱情证书')#写入内容
            f.fulsh()#写入文件后,立即从内存中把数据写到磁盘中
            f.truncate()#清空文件内容 只清空指针之后得文件内容 所以一般需要用到f.seek(0)
f.truncate([size])                 #把文件裁成规定的大小,默认的是裁到当前文件操作标记的位置
            f.writelines(['爱情证书','孙燕姿'])#将一个列表写入文件中
            f.close()关闭文件
 
--------------------------------------------------------------------
文件操作练习题:
二、文件操作方法大全:
1.os.mknod("test.txt")             #创建空文件
2.fp = open("test.txt",w)          #直接打开一个文件,如果文件不存在则创建文件
3.关于open 模式:
 
fp.read([size])                     #size为读取的长度,以byte为单位
fp.readline([size])                 #读一行,如果定义了size,有可能返回的只是一行的一部分
fp.readlines([size])                #把文件每一行作为一个list的一个成员,并返回这个list。其实它的内部是通过循环调用readline()来实现的。如果提供size参数,size是表示读取内容的总长,也就是说可能只读到文件的一部分。
fp.write(str)                       #把str写到文件中,write()并不会在str后加上一个换行符
fp.writelines(seq)                  #把seq的内容全部写到文件中(多行一次性写入)。这个函数也只是忠实地写入,不会在每行后面加上任何东西。
fp.close()                          #关闭文件。python会在一个文件不用后自动关闭文件,不过这一功能没有保证,最好还是养成自己关闭的习惯。  如果一个文件在关闭后还对其进行操作会产生ValueError
fp.flush()                          #把缓冲区的内容写入硬盘
fp.fileno()                         #返回一个长整型的”文件标签“
fp.isatty()                         #文件是否是一个终端设备文件(unix系统中的)
fp.tell()                           #返回文件操作标记的当前位置,以文件的开头为原点
fp.next()                           #返回下一行,并将文件操作标记位移到下一行。把一个file用于for … in file这样的语句时,就是调用next()函数来实现遍历的。
fp.seek(offset[,whence])            #将文件打操作标记移到offset的位置。这个offset一般是相对于文件的开头来计算的,一般为正数。但如果提供了whence参数就不一定了,whence可以为0表示从头开始计算,1表示以当前位置为原点计算。2表示以文件末尾为原点进行计算。需要注意,如果文件以a或a+的模式打开,每次进行写操作时,文件操作标记会自动返回到文件末尾。
fp.truncate([size])                 #把文件裁成规定的大小,默认的是裁到当前文件操作标记的位置。如果size比文件的大小还要大,依据系统的不同可能是不改变文件,也可能是用0把文件补到相应的大小,也可能是以一些随机的内容加上去。
--------------------------------------------------------------------
# 1.打开一个文件
#2、读取整个文件,返回字符串
#3、读取一行
#4、读取整个文件,返回列表
#5、写入字符串
#6、写入非int类型的列表
# 7.清空文件
# 8.关闭文件
 
****************************************************************************
字典:
字典(1、字典是无序的 2、key:value #key不能重复)
info={
'name':'lzc',
'sex':'nan',
}
(一)查询
print(info)
print(info['name'])
print(info['addr'])
print(info.get('addr','没有取到值'))
1、用中括号和get取值的方法区别,如果get方法取不到key时,不会报错,但是中括号取值不到就会报错
2、get方法还可多传一个参数,如果get不到值key的话,那么返回xx,如果不写默认返回none
 
(二)添加
1、info['addr']='beijing'
print(info)
2、info.setdefault('phone',123243444)
print(info)
(三)修改
info['age']=7 #有这个字段的时候是修改 没有这个字段的的时候是新增
print(info)
(四)删除
1、del info['age']
print(info)
2、print(info.pop('name')) #必须要指定key 返回的是删除的字段的值
3、info.clear() 清空字典
4、info.popitem() 随机删除一个元素
 
请务必注意,dict内部存放的顺序和key放入的顺序是没有关系的。
和list比较,dict有以下几个特点:
  1. 查找和插入的速度极快,不会随着key的增加而变慢;
  2. 需要占用大量的内存,内存浪费多。
而list相反:
  1. 查找和插入的时间随着元素的增加而增加;
  2. 占用空间小,浪费内存很少。
所以,dict是用空间来换取时间的一种方法。
 
需要牢记的第一条就是dict的key必须是不可变对象
这是因为dict根据key来计算value的存储位置,如果每次计算相同的key得出的结果不同,那dict内部就完全混乱了。这个通过key计算位置的算法称为哈希算法(Hash)。
要保证hash的正确性,作为key的对象就不能变。在Python中,字符串、整数等都是不可变的,因此,可以放心地作为key。而list是可变的,就不能作为key:
 
字典键的特性
字典值可以没有限制地取任何python对象,既可以是标准的对象,也可以是用户定义的,但键不行
1)不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住
2)键必须不可变,所以可以用数字,字符串或元组充当,所以用列表就不行
----------------------------------------------------------------
字典练习:
user={'name':'niuhany','age':18}
#字典取值的方式1 方式2
# print(user['name'])
# print(user.get('name'))
# 字典修改值方式1 方式2
# user['name']='lzc'
# user.update(name='haha')
# print(user)
 
# 给字典增加值的方式1 方式二
# user['addr']='huilongguang'
# user.setdefault('sex','nan')
# print(user)
 
# 删除值的方式1,方式2 删除随机值
# del user['name']
# user.pop('age')
# user.popitem()
# print(user)
 
print(user.items())
for k,v in user.items(): #同时循环k和value
print("%s=%s"%(k,v))
for k in user:
print("%s=%s"%(k,user[k]))
 
# 判断一个字典在不在字典里面
user={'name':'lzc',
'aes':'nan'}
if 'name' in user:
print(True)
 
 

python初学--文件操作、字典的更多相关文章

  1. Python :open文件操作,配合read()使用!

    python:open/文件操作 open/文件操作f=open('/tmp/hello','w') #open(路径+文件名,读写模式) 如何打开文件 handle=open(file_name,a ...

  2. 员工管理系统+字符编码+Python代码文件操作

    员工管理系统+字符编码+Python代码文件操作 1.员工管理系统 1.1  debug 代码调试 1.先使用鼠标左键在需要调试的代码左边点击一下(会出现一个红点)2.之后右键点击debug运行代码 ...

  3. Python 常见文件操作的函数示例(转)

    转自:http://www.cnblogs.com/txw1958/archive/2012/03/08/2385540.html # -*-coding:utf8 -*- ''''' Python常 ...

  4. 孤荷凌寒自学python第三十五天python的文件操作之针对文件操作的os模块的相关内容

     孤荷凌寒自学python第三十五天python的文件操作之针对文件操作的os模块的相关内容 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 一.打开文件后,要务必记得关闭,所以一般的写法应当 ...

  5. 孤荷凌寒自学python第三十三天python的文件操作初识

     孤荷凌寒自学python第三十三天python的文件操作初识 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 今天开始自学python的普通 文件操作部分的内容. 一.python的文件打开 ...

  6. python中文件操作的六种模式及对文件某一行进行修改的方法

    一.python中文件操作的六种模式分为:r,w,a,r+,w+,a+ r叫做只读模式,只可以读取,不可以写入 w叫做写入模式,只可以写入,不可以读取 a叫做追加写入模式,只可以在末尾追加内容,不可以 ...

  7. python中文件操作的其他方法

    前面介绍过Python中文件操作的一般方法,包括打开,写入,关闭.本文中介绍下python中关于文件操作的其他比较常用的一些方法. 首先创建一个文件poems: p=open('poems','r', ...

  8. Python常见文件操作的函数示例

    # -*-coding:utf8 -*- ''''' Python常见文件操作示例 os.path 模块中的路径名访问函数 分隔 basename() 去掉目录路径, 返回文件名 dirname() ...

  9. python的文件操作及简单的用例

    一.python的文件操作介绍 1.文件操作函数介绍 open() 打开一个文件 语法:open(file, mode='r', buffering=-1, encoding=None, errors ...

随机推荐

  1. ubuntu安装记录——安装作业部落cmd markdown

    安装这个折腾了一个多小时,,,, 表示是因为印象笔记没有markdown才买的作业部落cmd markdown的会员,,,,然而刚刚随意一看发现印象笔记出markdown了,,,,, 还是记录一下安装 ...

  2. 原 cocos2dx中毒冰冻shader

    #ifdef GL_ES precision mediump float; #endif uniform sampler2D u_texture; varying vec2 v_texCoord; v ...

  3. Linux之根文件系统的构建20160611

    说一下LINUX根文件系统的构建: 制作文件系统 1. 交叉编译busybox 安装:make install CONFIG_PREFIX=/work/nfs_root/fs_mini_mdev_ne ...

  4. printf函数用法小记

    By francis_hao    Aug 26,2017   C语言中printf函数是一个比较常用的函数,但是常用并不代表完全了解,本文翻译了printf的man手册,介绍了其全部功能(不包括ma ...

  5. HDU 5645

    DZY Loves Balls Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others ...

  6. Basic Data Structure HDU - 5929 (这个模拟我要报警了)

    Mr. Frog learned a basic data structure recently, which is called stack.There are some basic operati ...

  7. zookeeper源码分析之leader选举

    zookeeper提供顺序一致性.原子性.统一视图.可靠性保证服务zookeeper使用的是zab(atomic broadcast protocol)协议而非paxos协议zookeeper能处理并 ...

  8. 爬虫服务集群处理nginx返回504

    最近在对爬虫服务做分布式服务的时候总是遇到服务器返回504,搞了两天才发现原来是nginx中有对超时的设置参数,自己都是用默认的,然而客户端的等待时间超过了nginx默认的超时设置 修改 keepal ...

  9. ExtJS下拉列表使用方法(异步传输数据)

    最近使用ExtJS下拉列表框(ComboBox)希望完成一个动态下拉列表的功能,即列表中的数据都通过异步方式查询数据库而来,同时在用户选择了列表中的某个值后,可以从后台正确的获取用户选择项所对应的值. ...

  10. POJ 3087 Shuffle'm Up DFS

    link:http://poj.org/problem?id=3087 题意:给你两串字串(必定偶数长),按照扑克牌那样的洗法(每次从S2堆底中拿第一张,再从S1堆底拿一张放在上面),洗好后的一堆可以 ...