python基础学习5
在python下,
- 读模式
(r)
只可以读,不可以写 - 写模式
(w)
只可以写,不可以读,写的时候,若文件不存在,则会创建一个,若存在会清除该文件下内容,并将新的内容写进去 - 追加
append(a)
也可以进行写操作,不在不影响源文件的基础上进行写操作,同样的也是不可以读的
f=open('春晓','r',encoding='utf8')
data=f.read()
data=f.read(5)
print(data)
f.close()
f=open('春晓2','w',encoding='utf8')
data=f.write("hello world")
f.close()
f=open('春晓','a',encoding='utf8')
data=f.write("\nhello world\n")
data=f.write("nihao")
f.close()
对文件操作流程
- 打开文件,得到文件句柄(对象)并赋值给一个变量
- 通过句柄对文件进行操作
- 关闭文件
close
关闭操作,在“程序执行完毕后”进行关闭,在程序结尾处写上,会直接执行(没写不安全),若是没有写,python机制可以对其关闭
import time
f=open('春晓','a',encoding='utf8')
#print(f.fileno())#文件描述符 是区别不同文件的标志
data=f.write("\nhello world\n")
data=f.write("nihao")
time.sleep(50) #上面的内容没有直接写到磁盘中,而是现在缓冲区中,在程序执行完毕后才写入,
#所以在50秒之后才会在相应的文件中有结果
f.close()
在此期间,可以同时通过不同的.py程序对目标文件进行读操作,写操作
readline
:读取一行的内容,包括换行符,在同一个文件中进行第二次操作会继续读取下一行
相邻的readline
读出内容之间各一行原因是:readline
会读取改行最后面的换行符,导致换行,同时print
有一个默认换行的操作,所以又换了一行,另一个readline
读出的内容就会在该行 readlines
:通过行读取指定文件的所有内容,并组成列表 tell
:此方法可以查找光标的位置,对于英文来说:一个英文默认是1个字符,而对于中文来说:一个中文默认是3个字符 seek
:可以调整光标的位置
f=open('春晓','r',encoding='utf8')
print(f.tell())#0
f.read(2)
print(f.tell())#6
print(f.read(4))#不觉晓,
f.seek(0)
print(f.read(4))#春眠不觉
flush
:可以随时将内存中缓存的数据更新到磁盘中。(一般进度条的读取可以使用) truncate
:截取文件中的内容,对append(a)
方式是有意义的,因为此方式不会清空文件中的内容,而对于w写方式是
无意义的,因为在截取之前会清空文件中的内容 f.truncate(5)
截取5个字符之前的内容,后面的清空 r+
:读写模式 w+
:写读模式 会先清空文件中的内容,然后可以进行写操作,注意:在写之后若是进行读操作的话,注意光标的问题 a+
:追加读模式 因为追加所以光标在最后,读的话会读不出来,需要进行光标的调整
内存的存储机制就决定着写数据只能在最后写,不可以在中间插入,所以不可以写操作
f=open('春晓','r',encoding='utf8')
number=0
for i in f:
number+=1
if number==3:
f.write("qwe")
不可以在第三行处添加,这两是不同的机制,所以可以先将文件总内容读取到内存上,在读取的过程中可以在指定的部分添加内容,再将读取到内存上的内容写到另一个文件中
补充:
with open('春晓','r') as f:
...
和上面的读操作一样,此方法可以不用手写f.close,with下面的代码段执行完毕后,会自动关闭
#with同时管理多个文件对象
with open("春晓",'r') as f1,open("春晓2",'w') as f2 :
...
可以同时对多个文件进行操作
上一篇: C语言_文件输入输出_二进制文件