攻克python3-文件操作

1.文件的打开方式

  w:文件以只写的方式打开,并且清空文件,如果没有改文件直接创建。

  r:文件也只读方式打开,不可写。

  w+:文件以写读模式打开,并且清空文件,可写可读

  r+:文件以读写模式打开,可读可写,是追加写模式

  a:文件以只写模式打开,不可读,是追加写模式

  a+:文件以读写模式打开,可读可写,是追加写模式

  wb,rb,wb+,rb+,ab,ab+读写模式均以不加b一样,只是文件的格式为二进制

2.文件的写入

#f=open('data','w',encoding="utf-8")#文件句柄             #覆盖写
#f.write("我爱北京天安门\n")

#f=open('data','a',encoding='utf-8')             #追加写
#f.write('天安门前太阳升')
#f.writelines(list)                              #写入一个列表

#f=open('data','wb')                              #以二进制格式覆盖写
#f.write("我爱北京天安门\n".encode())

#f=open('data','ab')
#f.write('天安门前太阳升\n'.encode())               #以二进制格式追加写

#print(f.writable())                                #判断该文件是否可写

3.文件的读取

#f=open('data','r',encoding='utf-8')
#print(f.read())                 #全部读出
#print(f.readlines())            #全部读出以列表形式保存,每一行为一个元素
#print(f.readline())              #以行为单位读出,以字符串的格式保存
#print(f.readable())              #判断该文件是否可读
#二进制读取
#f=open('data','rb+')
#f.write("我爱北京天安门\n".encode())
#print(f.readline())

4.文件的指针操作

f=open("data2","r+",encoding='utf-8')               #文件的读写模式

f.write("-------da---------\n")
f.write("-------da---------\n")
f.write("-------da---------\n")
f.write("-------da---------\n")
f.write("-------da---------\n")
print(f.read())
print(f.tell())                      #判断当前文件指针的位置
f.seek(10)                         #移动文件指针的位置
print(f.tell())
print(f.read())
#任务现在我要从第10个字节开始修改内容

print(f.tell())
f.seek(20)
print(f.tell())
f.write("我修改的内容\n")
f.seek(0)
print(f.read())
print(f.tell())

5.文件内容的修改

修改文件内容我们不通过移动文件指针的方式进行修改,因为通过文件指针修改,会把我们不需要修好的内容覆盖掉

通过创建一个新文件,利用两个文件,一遍读一遍写的方式,修改内容

with open("data",'r',encoding='utf-8') as f,\
     open('data2','w',encoding='utf-8') as f2:
    find_str="夜晚的微风"
    replace_str='我爱你'
    for line in f:
        if find_str in line:
            line=line.replace(find_str,replace_str)
        f2.write(line)

 

 6.文件的其他操作

f=open("data2",'a',encoding='utf-8')
f.write("chose1\n")
f.flush()                   #强制刷新进入硬盘,不需要在缓存等待

f.truncate(10)              #清除,只保留前10个字节数据,其他清除

文件写入的过程,不是输入一个数据就写入一个数据,而是将这些输入的数据存入缓存中,当这些数据的大小达到某个值是,在一起写入硬盘,flush的作用是不要你在缓存区等待,只有你输入就立刻写进硬盘

posted @ 2018-04-19 16:01  苦行僧PH  阅读(309)  评论(0编辑  收藏  举报