Python文件操作

  读写文件是最常见的IO操作,在磁盘上读写文件的功能都是由操作系统提供的,操作系统不允许普通的程序直接操作磁盘(大部分程序都需要间接的通过操作系统来完成对硬件的操作),所以,读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),然后,通过操作系统提供的接口从这个文件对象中读取数据(读文件),或者把数据写入这个文件对象(写文件)。

  Python内置了读写文件的函数,open是最常用的文件打开函数,其中codecs包中提供了open函数,该函数具有内置函数open的所有功能,并且在内部还进行了编码的处理,所以建议使用codecs.open来对文件进行处理。

读取文件

  想要读取文件,那么就需要先行打开文件。

# 格式:
f = open(filename,mode,encoding)# filename:表示文件名。
# mode:表示打开文件的格式。
# encoding:表示打开的编码格式。

例子:

f = file('/etc/passwd','r')     # Python 2.x中包含file和open两个操作文件的函数,Python 3.x 中只有open,操作方法相同
for line in f.readlines():line = line.strip('n').split(':')print line结果:
['root', 'x', '0', '0', 'root', '/root', '/bin/bash']
['bin', 'x', '1', '1', 'bin', '/bin', '/sbin/nologin']
... ...

补充:

  以指定编码格式打开文件:f = open('/etc/password',encoding = 'UTF-8')

  我们把这个 f 成为文件句柄(用来标识一个文件的内存对象),包含文件名,字符集,大小,硬盘上的起始位置等等。

  f在这里就变成了一个文件迭代器,我们可以通过使用for line in f ,去循环的读取文件的每一行内容

文件打开模式

  文件打开的方式有如下几种:

  • r:只读打开,文件的默认打开方式  
  • w:文件不存在会创建,存在的话,会覆盖源文件(非追加)  
  • a:只追加模式打开(不能读)  
  • r+: 读写模式(写是追加) --->常用  
  • a+: 追加读写  
  • w+:写读模式(写同样是追加) ---->不常用  
  • rb:二进制读模式(一般用来做网络传输数据的时候,因为网络传输都是基于二进制格式的,所以必须用b) python 2.x 是可以用str传输的  
  • r+b:以二进制读写模式打开  
  • w+b:以二进制写读模式打开  
  • a+b:以二进制追加及读模式打开  
  • b:使用二进制模式(特殊文件需要用文本模式传输的话,建议使用b)  

注:

  U:表示在读取的时候,可以将‘rn’ 转换成 n (与r或r+模式连用)这样的好处是方便windows上到Linux的使用

  因为回车符在windows上表示为rn 而Linux上 表示为n

扩展:

  二进制只是一个文件的编码格式,并不带表文件的内容都是01010。所以我们一个str类型的文件也是可以当成二进制文件来处理的,只不过我们把str写入文件的时候需要转换成二进制格式,才能写入:

f = open('test.txt','rb')
f.write('你好'.encoding())
通过encoding就可以转换成二进制

文件对象方法

  文件对象的内置方法有很多种,如下所示:

fd.closed():判断文件是否被关闭,若被打开提示False,没有的话提示True
fd.flush():把修改的内容,强制刷新到文件中去
fd.isatty:判断是否是一个终端文件
fd.mode:查看文件的打开模式
fd.name:查看文件的名称
fd.next:迭代的方法,和readline很像,区别是,next读到末尾会报错,readline会继续返回空
fd.read:一次性读取所有内容,以字符串的方式存取
fd.readable():判断文件是否可读
fd.readlines:一次性读取所有内容,以列表的方式存取(适合操作小文件)
fd.readline():每次读取一行内容
fd.seek(0):调整文件读取的指针位置
fd.seekable():判断文件是否可以调整指针位置(tty,磁盘等文件是不能被seek的),可以被seek则返回真,否则返回假 --Python3.x
fd.tell():查询文件目前读取位置(以字符为单位)
fd.truncate():截取文件,从开头开始截取,不指定指针位置的话,那么会清空文件
fd.write:把一个字符串写入到文件中去
fd.writelines():把字符串列表写入文件中
fd.xreadlines():读一行打印一行,针对大文件非常适用 -----> Python 2.x 中适用,3.x中已经取消
fd.encoding:查看文件的编码
fd.writeable():判断文件是否可以写
fd.fileno(): 返回文件在操作系统上的文件描述符(默认会打开三个:0表示 stdin、1表示 stdout,2表示stderr)
fd.name:文件名称 

练习

  for 循环遍历文件,打印文件的每一行

fd = open('/tmp/hello.txt')
for line in fd:
print line,注意:这里for line in fd,其实可以从fd.readlines()中读取,但是如果文件很大,那么就会一次性读取到内存中,非常占内存,而这里fd存储的是对象,只有我们读取一行,它才会把这行读取到内存中,建议使用这种方法。

while循环遍历文件:

#!/usr/bin/env python
fd = open('/tmp/hello.txt')
while True:
line = fd.readline()
if not line:
break
print line,
fd.close()

使用with

  如果不想每次打开文件都关闭,可以使用with关键字,2.6以上版本支持with读取 with open('/tmp/hello.txt') as fd: 然后所有打开文件的操作都需要缩进,包含在with下才,这样不需要明确的指定close,当新的代码没有缩进的时候,文件会自动关闭。

with open('/tmp/hello.txt') as fd:while True:line = fd.readline()if not line:breakprint line,

python3 读取.plist文件_Python学习笔记 -5 - 文件操作相关推荐

  1. python shutil删除文件_Python学习笔记组织文件之shutil模块

    随笔记录方便自己和同路人查阅. #------------------------------------------------我是可耻的分割线--------------------------- ...

  2. python读取文件路径格式_Python学习笔记读写文件之文件与文件路径

    随笔记录方便自己和同路人查阅. #------------------------------------------------我是可耻的分割线--------------------------- ...

  3. python文件是什么的集合和抽象_python学习笔记(三):文件操作和集合

    这篇博客来说一下python对文件的操作. 对文件的操作分三步: 1.打开文件获取文件的句柄,句柄就理解为这个文件 2.通过文件句柄操作文件 3.关闭文件. 现有以下文件file.txt: 1 2 3 ...

  4. python从第二行开始读取文件_python学习笔记—— 从第二行开始读文件

    原博文 2018-04-16 16:26 − filename = info.txtf = open('info.txt') next(f) for line in f: print(line)nex ...

  5. 如何用python画帆船_python学习笔记6——文件操作来生成船只侧面图像的描述文件...

    最近在做船只检测的工作需要大量的正样本,之前的一些样本各种形态的船只都有,这一次训练分类器希望使用只含船只侧面的图像,这样检测船的侧面的成功率可能会提高一点.这样就需要大量的船只侧面图像,并生成描述文 ...

  6. python元组读取到列表_Python 学习笔记(1)Python容器:列表、元组、字典与集合...

    Python容器:列表.元组.字典与集合 列表: 1.列表 的创建 使用[ ] 或者list()创建列表:empty_list = [ ] 或者 empty_list= list() 使用list() ...

  7. python字符串大全_python学习笔记:字符串操作大全

    1.借取字符串str = '0123456789′ print str[0:3] #截取第一位到第三位的字符 print str[:] #截取字符串的全部字符 print str[6:] #截取第七个 ...

  8. Python3《机器学习实战》学习笔记(三):决策树实战篇

    转载请注明作者和出处: http://blog.csdn.net/c406495762  运行平台: Windows  Python版本: Python3.x  IDE: Sublime text3 ...

  9. Python3《机器学习实战》学习笔记(三):决策树实战篇之为自己配个隐形眼镜

    转载请注明作者和出处: http://blog.csdn.net/c406495762 运行平台: Windows Python版本: Python3.x IDE: Sublime text3 一 前 ...

最新文章

  1. 内容推荐 | 最新科研资讯与小技巧
  2. 关于Node.js中安装完express后不能使用express命令
  3. Linux特殊权限:SUID、SGID、SBIT
  4. DCMTK:可加载的DICOM数据字典
  5. c#入门经典笔记第十章
  6. iToken----开发前准备
  7. 2015/12/15--Document对象
  8. 关于调整我省高等教育自学考试计算机及应用等五个专业计划的通知,关于2008年我省高等教育自学考试计算机及应用等五个专业考生执行专业考试计划有关问题的通知...
  9. 联想笔记本电脑键盘灯怎么开启_联想笔记本电脑wifi怎么连接 联想笔记本电脑键盘灯开启方法...
  10. 基于SSM+Eclipse+MySQL的球鞋商城(SSM毕业设计源码)(SSM在线商城)
  11. dw实时视图与网页不一样_视图窗口和oc实时预览内容显示范围不一样,不完全同步。...
  12. 网上书城 springboot vue前后端分离
  13. ASPICE_SWE.1_01_02_SQ3RNote
  14. Fiddler报文分析-断点应用、模拟网络限速-HTTPS的 拦截
  15. Flutter开发之——文件系统目录pathprovider
  16. Java中的可变参数使用语法及用途
  17. 深度学习 100 题(转)
  18. 项目立项管理 建设方VS 承建方
  19. JG跳转的判定与溢出状态位的关系 SF==OF amp;amp;amp;amp;amp;amp;amp;amp; ZF == 0
  20. 033 | JAVA班主任管理系统(源代码+论文) | 大学生毕业设计 | 极致技术工厂

热门文章

  1. vue 自定义select下拉框样式(div模拟)
  2. 7. Python运算符之逻辑、成员、身份运算符及优先级
  3. JavaScript实现重置表单(reset)的方法
  4. 微软开源 Quantum Katas,领先的量子编程解决方案
  5. 某个第三方支付平台数据库的分析、学习与总结(转)
  6. MVC,MVP 和 MVVM 的图示
  7. 民用报警服务技术浅谈
  8. 替换软连接导致的问题
  9. linux select与多进程的结合
  10. Foursquare开源Rogue和Full-Loaded两款开发工具