码迷,mamicode.com
首页 > 编程语言 > 详细

Python基础-文件操作

时间:2017-04-08 22:49:56      阅读:220      评论:0      收藏:0      [点我收藏+]

标签:size   忘记   资料   href   set   png   lin   好的   src   

1. 文件操作流程

  • 打开文件,得到文件句柄并赋值给一个变量
  • 通过句柄对文件进行操作
  • 关闭文件 

语法

open(filename, mode)

实例

技术分享

 

2. 文件打开模式

  • r,只读模式(默认)。
  • w,只写模式。【不可读;不存在则创建;存在则删除内容;】
  • a,追加模式。【可读;   不存在则创建;存在则只追加内容;】

"+" 表示可以同时读写某个文件

  • r+,可读写文件。【可读;可写;可追加】
  • w+,写读
  • a+,同a

"U"表示在读取时,可以将 \r \n \r\n自动转换成 \n (与 r 或 r+ 模式同使用)

  • rU
  • r+U

"b"表示处理二进制文件(如:FTP发送上传ISO镜像文件,linux可忽略,windows处理二进制文件时需标注)

  • rb
  • wb
  • ab

 

3. with 语句

为了避免打开文件后忘记关闭,可以通过管理上下文,即:

with open(‘log‘,‘r‘) as f:
     
    ...

如此方式,当with代码块执行完毕时,内部会自动关闭并释放文件资源。

在Python 2.7 后,with又支持同时对多个文件的上下文进行管理,即:

with open(‘log1‘) as obj1, open(‘log2‘) as obj2:
    pass

 

4. 文件对象的方法

f.read()

为了读取一个文件的内容,调用 f.read(size), 这将读取一定数目的数据, 然后作为字符串或字节对象返回。

size 是一个可选的数字类型的参数。 当 size 被忽略了或者为负, 那么该文件的所有内容都将被读取并且返回。

技术分享

f.readline()

f.readline() 会从文件中读取单独的一行。换行符为 ‘\n‘。f.readline() 如果返回一个空字符串, 说明已经已经读取到最后一行。

技术分享

 

f.readlines()

f.readlines() 将返回该文件中包含的所有行。

如果设置可选参数 sizehint, 则读取指定长度的字节, 并且将这些字节按行分割。

技术分享

 另一种方式是迭代一个文件对象然后读取每行:

技术分享

这个方法很简单, 但是并没有提供一个很好的控制。 因为两者的处理机制不同, 最好不要混用。

f.write()

f.write(string) 将 string 写入到文件中, 然后返回写入的字符数。

技术分享

f.tell()

f.tell() 返回文件对象当前所处的位置, 它是从文件开头开始算起的字节数。

技术分享

f.seek()

如果要改变文件当前的位置, 可以使用 f.seek(offset, from_what) 函数。

from_what 的值, 如果是 0 表示开头, 如果是 1 表示当前位置, 2 表示文件的结尾,例如:

  • seek(x,0) : 从起始位置即文件首行首字符开始移动 x 个字符
  • seek(x,1) : 表示从当前位置往后移动x个字符
  • seek(-x,2):表示从文件的结尾往前移动x个字符

from_what 值为默认为0,即文件开头。下面给出一个完整的例子:

技术分享

f.close()

在文本文件中 (那些打开文件的模式下没有 b 的), 只会相对于文件起始位置进行定位。

当你处理完一个文件后, 调用 f.close() 来关闭文件并释放系统的资源,如果尝试再调用该文件,则会抛出异常。

技术分享

 

 

参考资料:

1. http://www.cnblogs.com/alex3714/articles/5717620.html

2. http://www.w3cschool.cn/python3/python3-inputoutput.html

Python基础-文件操作

标签:size   忘记   资料   href   set   png   lin   好的   src   

原文地址:http://www.cnblogs.com/OldJack/p/6683089.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!