2021-12-22 Python-18

写入文件

open 函数能以不同的方式打开文件,默认以只读 r 形式,还有 w 写入模式,a 附加模式和读写 r+ 模式。

with open('for_writting.txt','w') as file_name:
    file_name.write('hello python ! \n')
    file_name.write('I love programming.\n')

for_writing.txt

在当前目录下就会出现相应文件。write函数末尾加入换行符是因为该函数不会自动换行,否则两行文字会出现在同一行。如果文件不存在,w 模式自动创建文件。

比较一下r,r+,w,w+,a,a+的模式的异同。

with open('a.txt','r') as file:
    contents=file.readline()
#如果目录中不存在该文件,用 r 打开的话会报错

with open('a.txt','w') as file:
    file.write('123')
    print(file.tell()) #指示当前指针的位置
    file.write('12345')
    print(file.tell())
#如果目录中不存在该文件,那么目录中会自动创建该文件。并且因为上述提到的write函数不会自动换行,所以得到的结果是‘12312345’
with open('a.txt','w') as file:
    print(file.tell())  #0
    file.write('678910')
 #当将文件关闭后,重新以w模式打开时,发现指针指向的位置是0,也就是说w模式重新打开后如果输入新的内容,会覆盖之前的内容。最后文件中只剩下‘678910’

with open('a.txt','r+') as file:
    content1=file.read(3)
    print(content1)  #678
    print(file.tell()) #3
    file.write('abc') 
    print(file.tell()) #9
    file.seek(0) #调整指针到开头位置
    content2=file.read()
    print(content2) #678910abc
#r+是可读写的模式,以r+打开a.txt时,文件中的内容时‘678910’,读取了3个位置的内容,输出content1的内容为‘678’,现在指针的位置是3,但是当写的时候指针的位置会跳转到末尾,也就是最后文本内容为‘678910abc’,当在这个基础上再进行读取时,指针在文本末尾,需要再次调整指针到开头或者指定位置。
with open('a.txt','r+') as file:
    print(file.tell())
    file.write('a')
#操作前文件的内容为‘678910abc’,如果一开始没有读取操作,指针在文件打开时位于开头,当直接写入的时候,会从开头覆盖相应字符,最后文件的内容为‘a78910abc’
    

with open('a.txt','w+') as file:
    content1=file.read()
    print(content1) # 没有内容输出
    file.write('123')
    print(file.tell()) #3
    file.seek(0)
    content2=file.read()
    print(content2) #'123'
#w+模式打开时,是将文件内容完全清空,这一点和w模式相同。所以一开始读取文件时,文件内容是空的。写入内容‘123’,同样指针也是在末尾,如果需要读取文件,需要重置指针位置。
 
with open('a.txt','a') as file:
    print(file.tell()) #3    打开时的文件原始内容是‘123’
    file.wirte('abc') 
#以a模式打开,只能写不能读。刚打开文件时,查看指针的位置,发现指针在末尾,所以a模式就是将内容追加到末尾,不会覆盖原有的内容,和w+以及w模式不同。所以慎用w和w+模式。最后文本中的内容为‘123abc’

with open('a.txt','a+') as file:
    file.write('456')
    print(file.tell()) #9
    file.seek(3)
    content=file.read() 
    print(content) #'abc456'
#以a+方式打开时,读写均可,当追加完‘456’后,指针停在末尾。因此当读取时需要将指针拨到指定位置,再读取。写入只能在末尾

具体注意事项见上图,来自python文件操作打开模式 r,w,a,r+,w+,a+ 区别辨析 - 少年与python - 博客园 (cnblogs.com)

出了用关键词with之外,文件的读取可以直接通过 open 和close 函数

f=open(r'test/pi.txt','r')
lines= f.readlines()
for line in lines:
    print(line.strip())
f.close()

在文件内容操作完毕后,需要即使关闭。

你可能感兴趣的:(2021-12-22 Python-18)