码迷,mamicode.com
首页 > 编程语言 > 详细

Python 文件操作

时间:2018-01-02 23:27:31      阅读:239      评论:0      收藏:0      [点我收藏+]

标签:app   缓冲区   覆盖   with open   高效   技术分享   hello   清空文件   读取文件   

文件操作三部曲:打开 -> 操作 -> 关闭。

一. 文件操作, 常用的几种模式:

技术分享图片

如果打开文件,没有指定操作方式,默认是读取;

对于r/r+,如果文件不存在会报错,使用时需要保证文件存在;

对于w/w+,如果使用它们,每次运行文件内容都会被覆盖;

对a/a+,这种方式会追加内容,因此指针在结尾。

* 注意:当文件操作方式是a 或者a+ 时,文件指针在结尾,如果想要读取文件内容,记得修改指针的位置, f.seek(0) 这是将文件指针放在文件开始的地方。

二. 文件的几种操作方法:

f.seek(), f.read(), f.readline(), f.readlines(), f.close(), f.write(), f.writelines(), f.truncate(), f.flush()

1. 以读取"test"文件为例,对文件各种进行读取的操作:

技术分享图片

 1 f = open(test,a+,encoding=utf-8) # 打开文件“test”,往文件中追加内容
 2 f.seek(0)#将文件指针放在文件开始
 3 print(read(): 读取文件里面的全部内容)
 4 print(f.read())
 5 f.seek(0)
 6 print(readline() : 只读取一行的内容)
 7 print(f.readline())
 8 #f.seek(0) #不加这行的话f.readlines()会输出剩余的内容
 9 print(readlines(): 读取文件里面的全部内容,把文件里面每一行的内容放到一个list里)
10 print(f.readlines())
11 f.close() # 打开文件后记得关闭文件

这是对应的读取结果:

技术分享图片

 2. 循环读取文件: next()

Python 3 中的 File 对象不支持 next() 方法。 Python 3 的内置函数 next() 通过迭代器调用 __next__() 方法返回下一项。 在循环中,next()方法会在每次循环中调用,该方法返回文件的下一行,如果到达结尾(EOF),则触发 StopIteration

技术分享图片

3. 高效读取文件的方式:for f in fw:

1 fw = open(test,encoding=utf-8)
2 count =1
3 #直接循环文件对象的话,就是循环文件里面的每一行
4 for f in fw:
5     print(第%s行 %count,f)
6     count+=1
7 fw.close()    

4. 下面是写入文件,刷新缓冲区,清空文件的操作:

仍然以上面的test 文件为例,

 1 f = open(test,a+,encoding=utf-8)# 打开文件“test”,往文件中追加内容
 2 f.write(apple+ \n)#f.write()写入的需为字符串, \n 为写入换行
 3 tu=(dds,ttt,iii)
 4 f.writelines(tu)#写的时候,传入一个可迭代的对象
 5 f.write(\n)
 6 print(f.tell())#返回文件当前位置。
 7 f.flush()#刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入。
 8 f.seek(0)
 9 print(f.read())
10 f.truncate(10)#截取指定长度
11 f.seek(0)
12 print(f.read())
13 #f.truncate()#清空文件内容
14 f.close()# 打开文件后记得关闭文件

这是对应的结果:

技术分享图片

 5.  with 操作文件,自动关闭文件

在操作文件的时候,经常忘了关闭文件,这样的就可以使用with,它会在使用完这个文件句柄之后,自动关闭该文件。

具体使用如下:

1 with open(test, r+) as f:
2     res = f.read()
3     new_res = res.replace(ttt, nice) # 替换 ttt -> nice
4     f.write(new_res)
5     f.flush()
6     f.seek(0)
7     print(f.read())

技术分享图片

 用with 进行多文件的操作,具体如下:

1 with open(test,r+) as fr:
2     with open(test_new, w+) as fw:  # 这个是多文件的操作,打开两个文件,fr是读,fw是新建一个文件写
3         for line in fr:  # 循环test 文件中的每一行
4             new_line = line.replace(hello, good)
5             fw.write(new_line)  # 写到test_new文件中
6             

以上是对文件操作的总结。

 

Python 文件操作

标签:app   缓冲区   覆盖   with open   高效   技术分享   hello   清空文件   读取文件   

原文地址:https://www.cnblogs.com/nancyzhu/p/8146408.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!