python 之 文件读写

󰃭 2017-03-14

原创作品: 首发u3v3, 转载请保留

地址: https://www.u3v3.com/ar/1289

作者ID: Yi_Zhi_Yu

首发日期: 2017.3.4


前言

一直想总结一下 python 的文件相关的操作, 今天终于来了

python 内置的文件处理函数足以应付常见的文件处理, 以下分场景介绍使用方式

获取文件句柄

通过程序读写文件, 需要通过文件句柄, python 下的文件句柄获取通过open 函数

fh = open('/path/to/file', 'w')

open的第一个参数是文件路径, 第二个参数是表示打开的文件句柄能够进行操作的权限模式, 常用的有以下几种

w: 打开文件, 清空文件内容重新写入
a: 打开文件, 向文件末尾追加内容
x: 打开一个新的文件, 进行写入, 如果文件存在, 抛出一个异常FileExistsError
r: 只读模式打开文件

t: 文本模式
b: 二进制模式

上班部分表示的是文件句柄的操作模式, 下半部分表示操作的文件内容模式

默认是只读 + 文本模式, 即r+t, 如下

fh = open('/path/to/file', 'r+t')

写入文件

我们来尝试写入一行数据到某个文件中

写入一行数据到文件中

数据如下

Yi_Zhu_Yu, man

把这个写入文件 users.txt 中

fh = open('/tmp/users.txt', 'w+t')
fh.write('Yi_Zhi_Yu, man')
fh.close() 

注意, 这里有个fh.close(), 每次文件写入, 必须执行close, 否则文件不会真正写入磁盘

这个时候, 我们再看文件内容, 就多了一行

Yi_Zhi_Yu, man

写入多行数据

现在, 我们再往这个文件里写入 多行记录, 数据格式如下

Yi_Zhu_Yu, man
one_fisher, man
afishman, man

各位可以自己参考上面的代码, 自己练习,

注意两点

  1. 写入文件时, 每行最后的换行符是 “\n”
  2. 当需要连续写入时, open 的模式就不适合w+t了,

当然, python 的文件写入还有一个函数writelines, 允许你将列表内容直接写入文件,

fh = open('/tmp/users.txt', 'w+t')
fh.writelines(['tony', 'wang', 'hello', 'world'])
fh.close()

这时我们看文件内容

tonywanghelloworld

我们可以看到, 中间是没有任何分隔的, 使用这种方式, 试试写入上面我们定义了多行的格式的数据写入文件吧

读取文件内容

现在, 我们的文件里已经有一下内容了

Yi_Zhu_Yu, man
one_fisher, man
afishman, man

我们如何读取文件中的内容呢

全部读取

In [35]: fh = open('/tmp/users.txt', 'r+t') # 只读模式

In [36]: print(fh.read())
Yi_Zhi_Yu, man
one_fisher, man
afishman, man

In [37]: fh.close()

这里你print的就是整个文件内容

一行一行读


In [38]: fh = open('/tmp/users.txt', 'r+t')

In [39]: print(fh.readline())
Yi_Zhi_Yu, man

In [40]: print(fh.readline())
one_fisher, man

In [41]: print(fh.readline())
afishman, man

In [42]: print(fh.readline())

In [43]: fh.close()

这里可以看出来, 通过readline(), 实现了一次读取一行的操作

多行读取

这里我们将文件里的多行直接读取到一个列表中

In [44]: fh = open('/tmp/users.txt', 'r+t')

In [45]: fh.readlines()
Out[45]: ['Yi_Zhi_Yu, man\n', 'one_fisher, man\n', 'afishman, man\n']

以上就是常见的文件读写, 如有错误, 请在评论中指出, 谢谢