###  1
##******************************
##*python文件最基本的操作
##*******************************
f = open("yesterday",'r+',encoding = "utf-8") #打开文件,f叫做文件句柄,包含文件大小等各种信息,可以看做一个对象
#f = open("yesterday",'a+',encoding = "utf-8") #追加读写模式
#f = open("yesterday",'rb',encoding = "utf-8") #文件句柄 二进制格式读写文件
#W+写读模式没什么作用,读写模式有一些作用
#data = f.read()
#data2 = f.read()  #文件读取光标移到文件最后,已经读取不到内容了
#print('________data_____________',data2)
f.write("昨夜再也不会回来\n")  #还必须选取文件打开模式,读或者写
f.write("清晨的阳光还会回来\n")
data = f.read()
print('________data_____________',data)
#w打开是创建一个文件,如果有则会删除原有数据重新写
f.close()

###  2
###########*****************
##**判断文件第10行,如果是则输出下划线下面一种是比较low的方法,它需要把文件全部读取到内存里以后再进行判断,
##**如果文件较大这种方法并不可靠
###########*****************
for index,line in enumerate(f.readlines()):
    if index == 9:
        print("------------分割线--------------")
        continue
    print(line.strip()) #去掉一行中的换行符
#f.truncate(500)   #文件500个字符以后都被清空

###  3
###########*****************
##**判断文件第10行,如果是则输出下划线下面一种是比较higher的方法,它使用到一个计数器,
##**使用时只需要每次将一行读取到内存,并且判断计数器即可
###########*****************
count = 0
for line in f: #f被看做了一个迭代器
    count += 1
    if count == 10:
        print("-------------------分割线-------------------")
        continue
    print(line)

'''
f = open("yesterday",'r+',encoding = "utf-8")
print(f.tell())
print(f.read(5))
print(f.tell())   #告诉当前光标的位置
f.seek(0)
f.seekable()     #判断文件是否可以移动
print(f.readline())
print(f.encoding)  #打印文件编码
print(f.fileno())  #得到操作系统调度文件时使用到的I/O接口
print(f.flush())   #将要写入的文件刷新写到硬盘上去
'''

###  4
########*****************************************
##*打印一个进度条
##*主要是展示flush的功能
########*********************
import sys,time
for i in range(50):
    sys.stdout.write("#")
    sys.stdout.flush()     #从缓冲刷新到屏幕
    time.sleep(0.5)        #延迟0.5S

###  5
########*****************************************
##*二进制文件读取
##*注意区分二进制文件与文本文件操作的区别
########*****************************************
f = open("yesterday",'wb') #二进制没有字符编码格式,一些文件必须以二进制格式打开
#print(f.readline())
#print(f.readline())
f.write("you are the best beautiful girl\n".encode())

###  6
####****************************************
#*对文件的内容进行修改
#*先把文件加载到内存里再进行修改
#*打开一个文件,再写到一个新文件里,读入内存和存入磁盘时同时操作的
####*****************************************
f = open("yesterday",'r',encoding = "utf-8")
f_new = open("yesterday1.txt",'w',encoding = "utf-8")
for line in f:
    if "girl" in line:
        line = line.replace("girl","my love")   #找到内容,则将内容给替换掉
    f_new.write(line)
f.close()
f_new.close()