python基础教程:文件读写

栏目: Python · 发布时间: 5年前

内容简介:在Linux系统中,一切都是文件。但我们通常说的文件是保存在磁盘上的图片、文档、数据、程序等等。而在程序的IO操作中,很多时候就是从磁盘读写文件。本节我们讲解Python中的文件对象如何操作文件。通过Python内置函数

Linux 系统中,一切都是文件。但我们通常说的文件是保存在磁盘上的图片、文档、数据、程序等等。而在程序的IO操作中,很多时候就是从磁盘读写文件。本节我们讲解 Python 中的文件对象如何操作文件。

python基础教程:文件读写

创建文件对象

通过Python内置函数 open() 可以很容易的创建一个文件对象。open函数有很多参数,最常用的有两个,使用open函数最常用的方法是: open(filename, mode)

f = open('myfile', 'w')

第一个参数 filename 是文件名的字符串,比如 myfile 。第二个参数也是一个字符串,表示文件使用方式。 mode 的可选项如下:

mode 含义
‘r’ 以只读模式打开(默认)
‘w’ 以可写模式打开,并清楚文件内容(如果文件存在的话)
‘x’ 创建一个新文件并以可写模式打开
‘a’ 以可写模式打开,从文件末尾开始写入(如果文件存在的话)
‘b’ 二进制模式
‘t’ 文本模式(默认)
’+’ 打开一个已存在文件以便进行更新(读和写)

其中的 'b''t' 是指定文件内容是文本还是二进制,其它都说是关于读写方式的。

'b' 是二进制模式打开文件,读写的数据都是字节对象(bytes),这个模式可以读写一切文件,包括文本文件,但读写文本文件时要注意编码的问题。

't' 是文本模式下读写文件。读取时,默认会把平台特定的行结束符 (Unix 上的 \n , Windows 上的  \r\n )转换为 \n 。写入是,默认会把出现的 \n 转换回平台特定的结束符。这种默认的“幕后修改”对文本文件来说没有问题,但会破坏二进制数据(比如,JPEG或exe)文件中的数据。

在使用 open 创建文件对象时,最好使用  with 关键字。其好处是,当字句体结束后文件会正确关闭,即使在某个时刻引发了异常。并且 with 比等效的 try-finally 代码块更简短:

In [102]: with open('myfile') as f: 
     ...:     data = f.read() 
     ...:

In [103]: f.closed   
Out[103]: True

如果没使用 with 关键字,就要调用 f.close() 来关闭文件并立即释放它使用的系统资源。如果没有显示的关闭文件,Python的垃圾回收器最终将销毁该对象并为你关闭打开的文件,但这个文件可能会保持打开状态一段时间。另外一个风险是不同的Python实现会在不同的时间进行清理。

通过 with 语句或者调用 f.close() 关闭文件对象后,尝试使用该文件对象将自动失败。

文件对象的方法

通过上面的方法创建文件对象 f 后,,我们就可以通过其对应的方法读写数据了。

(1)写内容到文件:f.write(string)

把内容写入文件的方法是 write() 方法,传递的对象必须是字符串(文本模式下)或字节对象(二进制模式下)。如果要写入其它类型的对象(比如,字典、列表等等),就要先把它们转换成字符串(文本模式下)或字节对象(二进制模式下)。

In [109]: f = open('myfile', 'w')

In [110]: f.write('认真学Python,就是文件的全部内容。\n')
Out[110]: 21

In [111]: f.close()

(2)读取文件内容:f.read(size)

它会读取文件里面的数据并将其返回为字符串(在文本模式下),或者字节对象(二进制模式)。参数 size 是一个可选的整数参数,当 size 被省略或为负的时候,读取文件的全部内容;如果文件的大小是机器内存的两倍或更大,那么可能出现错误。读取并返回的size大小的内容。如果已经读完全部内容(到达文件末尾),将返回一个空字符串。

In [112]: f = open('myfile')

In [113]: f.read()
Out[113]: '认真学Python,就是文件的全部内容。\n'

In [114]: f.read()
Out[114]: ''

f.readline() 从文件读取一行,换行符 \n 留住字符串末尾;

f.readlines() 读取文件所有行,返回一个字符串的列表;

In [118]: f.readline()
Out[118]: '认真学Python,就是文件的全部内容。\n'

In [119]: f.seek(0)
Out[119]: 0

In [120]: f.readlines()
Out[120]: ['认真学Python,就是文件的全部内容。\n']

遍历文件的所有行,也可以用遍历文件对象的方式,这是内存高效、快速并简单的方式:

In [122]: for line in f: 
     ...:     print(line) 
     ...:
认真学Python,就是文件的全部内容。

(3)文件对象的位置

前面的例子中,我们已经读到文件的末尾,如果要再从头读的话就要调用 f.seek(0) 来设置文件对象的位置到文件开头。这个方法有两个参数: f.seek(cookie, whence=0)

  • cookie 是位置偏移量
  • whence 是相对位置,它有三种相对位置:

    • 0 文件开头,偏移量是0或整数;
    • 1 当前位置,偏移量可以是负数;
    • 2 文件末尾,偏移量通常是负数;

如何查看当前位置呢?调用 f.tell() 方法。


以上所述就是小编给大家介绍的《python基础教程:文件读写》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

HTML5与CSS3权威指南(上册) (第3版)

HTML5与CSS3权威指南(上册) (第3版)

陆凌牛 / 机械工业出版社 / 2015-9-1 / CNY 89.00

本书是HTML 5与CSS 3领域公认的标杆之作,被读者誉为“系统学习HTML 5与CSS 3的最佳著作”和“Web前端工程师案头必备图书之_”。 前两版累计印刷超过15次,网络书店评论超过8000条,98%以上的评论都是五星级的好评。不仅是HTML 5与CSS 3图书领域当之无愧的领头羊,而且在整个原创计算机图书领域是佼佼者。 第3版首先从技术的角度根据最新的HTML 5和CSS 3......一起来看看 《HTML5与CSS3权威指南(上册) (第3版)》 这本书的介绍吧!

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具