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
各位可以自己参考上面的代码, 自己练习,
注意两点
- 写入文件时, 每行最后的换行符是 “\n”
- 当需要连续写入时, 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']
以上就是常见的文件读写, 如有错误, 请在评论中指出, 谢谢