00.写在前面
最近由于经常需要操作文本文件,所以涉及到很多文本文件的读写操作,也做一个简单的总结,方便自己以后查阅,也方便大家阅读。
python版本:2.7.13
01.关于文件读取的方法
(1)利用 read()
一次性读取。这里针对小文件,可以一次性读取所有内容到内存,然后存成一个str
类型的变量。
Rootpath='F:\\Points_DEMs.txt'
with open(Rootpath, 'r') as fa:
fa.read()
(2)利用readline()
按行读取文件,或者利用readlines()
获得一个迭代器,以供循环。
Rootpath='F:\\Points_DEMs.txt'
with open(Rootpath, 'r') as fa:
#for line in fa.readlines():
for line in fa:
# 整行数据以','分割且忽略末尾的换行符('\n')
points = line[:-1].split(',')
# 字符转换为数值型
points = [float(xx) for xx in points]
Ps1.
这里同样的还有file.next()
,和readline()
相同逐行读取,但是在没读到数据的时候会报错
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration
Ps2.
在这里注意区分readlines()
和 read()
,其实两者都读取全部数据到内存中,但是前者是形成一个行迭代器,可以迭代出所有行的内容,后者是把所有内容存在一个str
对象里面(所有内容全都合并到了一起)。
但是readlines()
的速度会比单纯按行readline()
读取要快很多。
02.关于文件写入的方法
文件写入的主要思路也是:打开-写入-关闭。利用with open as
可以完成两步。
暂时只接触到这两种方法,后面还有再补充,也欢迎大家补充。
(1) 逐行写入
with open(outputpath, 'w') as fout:
result = "your result"
fout.write(result )
(2) 多行写入
with open(outputpath, 'w') as fout:
result = ['\nhello dear!','\nhello son!','\nhello baby!\n']
fout.writelines(result )
03.关于文件读写模式选择
常用的一些主要模式如下表:
模式 | 描述 |
---|---|
r | 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 |
r+ | 打开一个文件用于读写 |
w | 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
w+ | 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
a | 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
a+ | 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 |
最后,如果有什么错误,欢迎大家指出,不能有错误误导了别人。