视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
详解关于Python中文件的读取和写入
2020-11-27 14:22:23 责编:小OO
文档


这篇文章主要介绍了详解关于Python中文件的读取和写入,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

从文件中读取数据

读取整个文件

这里假设在当前目录下有一个文件名为’pi_digits.txt’的文本文件,里面的数据如下:

3.1415926535
79323846
23383279
with open('pi_digits.txt') as f: # 默认模式为‘r’,只读模式
 contents = f.read() # 读取文件全部内容
 print contents # 
输出时在最后会多出一行(read()函数到达文件末会返回一个空字符,显示出空字符就是一个空行) print '------------' print contents.rstrip() # rstrip()函数用于删除字符串末的空白
3.1415926535
79323846
23383279

------------
3.1415926535
79323846
23383279

逐行读取

可以通过循环来实现逐行读取数据:

with open('pi_digits.txt') as f: 
 for line1 in f: 
 print line1 # 每行末尾会有一个换行符
 print '------------'
 for line2 in f: 
 print line2.rstrip() # 此时文件已经读完,line2指向文本末尾,因此不会有
输出
3.1415926535

79323846

23383279

------------

读取文件时相当于有一个指针在记录读取的位置,数据读到哪,这个指针就指到哪边,继续读取数据时会从该位置继续读取,因此上面代码中第二个循环中输出为空。将上述代码稍加修改如下:

with open('pi_digits.txt') as f: 
 for line1 in f: 
 print line1 
 print '------------'
 
 with open('pi_digits.txt') as f: # 需要重新打开文本进行读取
 for line2 in f: 
 print line2.rstrip() # 删除字符串末尾的空白
3.1415926535

79323846

23383279

------------
3.1415926535
79323846
23383279

上述代码相当于第一次读取完后关闭该文件又重新打开进行读取。逐行读取数据也可以用readline()函数,如下:

with open('pi_digits.txt') as f: 
 # readline()每一次读取一行数据,并指向该行末尾
 line1 = f.readline() # 读取第一行数据(此时已经指向第一行末尾)
 line2 = f.readline() # 从上一次读取末尾开始读取(第二行)

 print line1.rstrip() print line2.rstrip()
3.1415926535
79323846

有时候我们想要一次性读取全部数据并且按分开存储以便于后续的操作,当然用上面的循环可以实现,但python提供了更简单的方法readlines():

with open('pi_digits.txt') as f: 
 lines = f.readlines() # 读取文本中所有内容,并保存在一个列表中,列表中每一个元素对应一行数据
print lines # 每一行数据都包含了换行符

print '------------'
for line in lines: 
 print line.rstrip() 
print '------------
'pi_str = '' # 初始化为空字符
for line in lines:
 pi_str += line.rstrip() #字符串连接
print pi_str
['3.1415926535
', '79323846
', '23383279
']
------------
3.1415926535
79323846
23383279
------------
3.14159265357932384623383279

写数据到文件

写数据有几种不同的模式,最常用的是w’, ‘a’, 分别表示擦除原有数据再写入和将数据写到原数据之后:

filename = 'write_data.txt'
with open(filename,'w') as f: # 如果filename不存在会自动创建, 'w'表示写数据,写之前会清空文件中的原有数据!
 f.write("I am Meringue.
")
 f.write("I am now studying in NJTECH.
")

此时会在当前路径下创建一个’write_data.txt’的文本文件,并向文件中写入数据如下:

I am Meringue.
I am now studying in NJTECH.

下面继续在该文件中加入新数据:

with open(filename,'a') as f: # 'a'表示append,即在原来文件内容后继续写数据(不清楚原有数据)
 f.write("I major in Machine learning and Computer vision.
")

此时的文件内容为:

I am Meringue.
I am now studying in NJTECH.
I major in Machine learning and Computer vision.

下载本文
显示全文
专题