首先我们得知道python中如何操作IO流? 1 打开文件 2 操作
1.打开文件
通过全局函数open( )-------open()的作用是打开本地文件
open( file ,mode=" ")
open有两个参数 参数1:file表示打开的路径或打开文件的文件名
参数2:mode表示打开的模式(值有"r","w","a"....)在此主要说r,w,a
写第一个参数file,如果你的文件是在当前路径下创建的,两种方式打开文件1.写完整路径的方式2.直接写入文件名的方式
如何在cmd中查看当前路径
>>> from os import path
>>> path.abspath(".")
'C:\\Users\\Administrator' #这是我的当前路径
#在当前目录'C:\\Users\\Administrator' 下创建了名为a.txt的文件
#方式1:通过路径的方式打开
>>> open("C://Users//Administrator//a.txt")
<_io.TextIOWrapper name='C://Users//Administrator//a.txt' mode='r' encoding='cp936'>
#方式2:通过直接写入文件名的方式打开
>>> open("a.txt")
<_io.TextIOWrapper name='a.txt' mode='r' encoding='cp936'> #输出的是内存里的地址
如果你的文件不是在当前路径下创建的只有通过写完整路径的方式打开
#在"C://Users"路径下创建了名为b.txt的文件
>>> open("C://Users//b.txt")
<_io.TextIOWrapper name='C://Users//b.txt' mode='r' encoding='cp936'>
>>> open("b.txt") #文件非当前路径下,直接写文件名会报错
Traceback (most recent call last):
File "", line 1, in
FileNotFoundError: [Errno 2] No such file or directory: 'b.txt'
2.操作字符数据
下述是对a.txt这个文件进行操作的示例
①mode = " r "
#设置mode的值为"r",f.read()将a.txt文件里的内容读取出来,切记要关流f.close()
>>> f =open("a.txt",mode="r")
>>> f.read()
'hi python'
>>> f.close() #调用close()方法时,首先会把缓冲区数据写入文件
②mode = " w "
#设置mode的值为"w",f.write()写入需要写入的东西,关流之后文件里原先的内容hi python被覆盖
>>> f = open("a.txt",mode="w")
>>> f.write("hi")
2 #返回字符个数
>>> f.write("java")
4
>>> f.close()
注意:不能对关闭的文件执行I/O操作
>>> f=open("a.txt",mode="w")
>>> f.write("aa")
2
>>> f.close()
>>> f.write("dd") #报错:不能对关闭的文件执行I/O操作。
Traceback (most recent call last):
File "", line 1, in
ValueError: I/O operation on closed file. #ValueError:对关闭的文件执行I/O操作。
③ 如何使新内容不覆盖原内容?设置mode="a"
>>> f = open("a.txt",mode="a")
>>> f.write("~hi java~~")
10
>>> f.close()
④flush()用法
flush() 方法是用来刷新缓冲区的,即将缓冲区中的数据立刻写入文件,同时清空缓冲区,不需要是被动的等待输出缓冲区写入。
一般情况下,文件关闭后会自动刷新缓冲区,但有时你需要在关闭前刷新它,这时就可以使用 flush() 方法。
#flush() 方法是用来把文件从内存(缓冲区)中强制刷新到硬盘中,同时清空缓冲区和刷新缓冲区的,即将缓冲区中的数据立刻写入文件,
>>> f = open("a.txt",mode="w")
>>> f.write("hello")
5
>>> f.flush()
>>> f.write("python")
6
>>> f.close()