#data = open("yesterday",encoding= "utf-8").read()   #添加encoding 是为了让utf-8打开 否则就默认win的gbk打开
#f = open("yesterday",encoding='utf-8' )   #文件句柄    r 默认读
#f = open("yesterday2",'w',encoding='utf-8')   #写
f = open("yesterday2",'a',encoding='utf-8')    # a=append 追加
f = open("yesterday2",'rb')          #文件句柄  二进制文件 b'字节类型  (1、网络传输只能用二进制 2、下载的二进制文件需要用二进制打开)
f = open("yesterday2",'wb')          #文件句柄  二进制文件

data=f.read()
data2=f.read()     #从第一个结尾处开始读
print(data)
print('----------data2------------%s--'%data2)


f.write("when i was young i listen to the radio\n")  #以写创建文件
data=f.read()
print('---read',data)
f.close()


#文件读        #文件句柄    r 默认读

f=open("yesterday",encoding="utf-8")     #添加encoding 是为了让utf-8打开 否则就默认win的gbk打开
data=f.read()
data2=f.read()
print(data)
print(data2)
f.close()


#打印到第几行

f=open("yesterday2",'r',encoding="utf-8")
for index,line in enumerate(f.readlines() ):    #index   enumerate   列举
    if index  ==9:
        print('-----------我是分割线------')
        continue
    print(line.strip() )

#优化
f=open("yesterday2",'r',encoding="utf-8")
count = 0
for line in f :
    if count==5:
        print('-----------我是分割线------')
        count +=1
        continue
    print(line)
    count+=1


#按字符计数
f=open("yesterday2",'r',encoding="utf-8")
print(f.tell())               #打印到某个地方
#print(f.readline())         #计数一行的字符数
#print(f.read(5) )            #读取5字符数
print(f.readline())
print(f.readline())
print(f.readline())
print(f.tell())             #打印光标在哪里
f.seek(10)                 #回到某个的地方
print(f.readline() )

print(f.encoding)            #打印文件编码

print(f.fileno())            #返回文件具体占位成功的编号
print(f.name)                #打印文件名字
print(f.flush() )            #刷新(权限)   刷出临时缓存里的文件(刷新实时硬盘)

f.closed                    #判断文件是否关闭
f.truncate()                #要用a    ()里未写东西 就清空  (10)在第十个位置截断,前面也留着 移动也不好使


#读前五行
#for i in range(5):
#    print(f.readline() )

#写  从写创立文件

f=open("yesterday2",'w',encoding="utf-8")   #写
f.write("东方红,太阳升,\n")
f.write("东方出了个。。。")
data=f.write()
print(data)
f.close()

#追加   a=append
f=open("yesterday2",'a',encoding="utf-8")
f.write("\n浪里个浪。。。\n")
f.write("lalllalalalalala....")
data=f.write()
print(data)
f.close() 


#文件的既读又写(打开文件追加读写)
#f=open("yesterday2",'r+',encoding="utf-8")   #文件句柄  r+  表示读写
print(f.readline() )
print(f.readline() )
print(f.readline() )
f.write("-----diao-----")                    #写在最后面
print(f.tell())
print(f.readline())
'''

#文件的写读
f=open("yesterday2",'w+',encoding="utf-8")    #文件句柄 w+   表示写读
print(f.write("--------diao---------\n"))
print(f.write("--------diao---------\n"))
print(f.write("--------diao---------\n"))
print(f.write("--------diao---------\n"))
print(f.tell())
f.seek(10)
print(f.readline() )
f.write("shold be in the begining")           #追加写在最后面(Python3)
print(f.close() )


#二进制文件的读写 写读
#f = open("yesterday2",'rb')          #文件句柄  二进制文件 b'字节类型  (1、网络传输只能用二进制 2、
f = open("yesterday2",'wb')          #文件句柄  二进制文件
f.write("hello brinary!\n".encoding())  #.encoding()    转化成二进制
f.close()

#文件的修改 

f=open("yesterday2","r",encoding= "utf-8")
f_new=open("yesterday2.bak","w",encoding= "utf-8")


for line in f:                #循环打印旧文件,找到需要替换的句子,修改,然后写新的
    if "多甜美的曲儿等我歌唱" in  line:
        line  = line.replace("多甜美的曲儿等我歌唱","多甜美的曲儿等Jack歌唱") #没找到就不动,找到后就修改
    f_new.write(line)                                                     #修改后写入新文件
f.close()
f_new.close()

 #实现简单的shell sed替换功能


import sys

f=open("yesterday2","r",encoding= "utf-8")
f_new=open("yesterday2.bak","w",encoding= "utf-8")

find_str = sys.argv[1]
replace_str2 = sys.argv[2]
for line in f:                #循环打印旧文件,找到需要替换的句子,修改,然后写新的
    if find_str in  line:
        line  = line.replace(find_str,replace_str2)
    f_new.write(line)
f.close()
f_new.close()


 #with语句


#f=open("yesterday2","r",encoding= "utf-8")

#with open("yesterday2","r",encoding= "utf-8") as f:   #帮你自动关闭文件

with open("yesterday2", "r", encoding="utf-8") as f,\
        open("yesterday2", "r", encoding="utf-8") as f2 :  # 打开两个文件

     for line in f:
         print(line)