File操作

'''
-a append ,但是不能读
-r read only
-w write 会覆盖创建
'''
#data = open("bigger",encoding="UTF-8").read()
f = open("bigger",'a',encoding="UTF-8") #文件句柄,就是文件的内存对象
data = f.read()
data2 = f.read() #这个时候的赋值已经读到文件尾了,如果要给data2赋值,需要重新将光标返回
print(data)
print("data2",data2)

#Appen to openfile
f.write("Python day 3 study! \n")
f.close()

##write
f = open("bigger2",'w',encoding="UTF-8")
f.write("Python day 3 study! \n") #必须要r模式
f.write("UPUPUP! \n")


##读前5行
f = open("bigger",'r',encoding="UTF-8") #文件句柄,就是文件的内存对象
data = f.read() #这个时候的赋值已经读到文件尾了,如果要给data2赋值,需要重新将光标返回
for i in range(5):
print(f.readline())
f.close()
f = open("bigger",'r',encoding="UTF-8") #文件句柄,就是文件的内存对象
for index,line in enumerate(f.readlines()):
print(index,line.strip())

###高效读文件方式,内存一行行的读
f = open("bigger",'r',encoding="UTF-8") #文件句柄,就是文件的内存对象
for line in f:
print(line)
f.close()

seek()
tell()
encoding()
fileno() -- 返回句柄编号
f.flush() --将缓存刷入硬盘
f.truncate()

with open() as f --
## 进度条标准输出
import sys,time
for i in range(50):
sys.stdout.write("#")
sys.stdout.flush()
time.sleep(0.03)

#截断操作
f=open("bigger2",'w',encoding ="UTF-8")
for i in range (5):
f.write("Python day 3 study! \n") #必须要r模式
f.write("UPUPUP! \n")
f.seek(40)
f.truncate()
# 文件修改,澳大利亚是个幅员辽阔的国家。=》》上海is a great city!
f = open("bigger","r",encoding="UTF-8")
f_new = open("bigger_bak","w",encoding = "UTF-8")
for line in f:
if "澳大利亚是个幅员辽阔的国家。" in line:
line = line.replace("澳大利亚是个幅员辽阔的国家。","上海is a great city!")
f_new.write(line)
f.close()
f_new.close()

###利用正则表达式来更新文件
import os
import  re

f = open ("bigger2", "r+")
open('bigger_bak', 'w').write(re.sub(r'UP', 'Love python', f.read()))

 



Appendix
模式描述
r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。
r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。
w 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
w+ 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

 

posted @ 2018-05-05 10:41  ywyin  阅读(105)  评论(0编辑  收藏  举报