操作流程:
打开文件,得到句柄并赋值给一个变量 句柄为读取文件的内存对象
操作文件 关闭文件
打开文件:
data= open("yesterday",encoding="utf-8").read()
print(data)
r 读取
w 写入
f = open("yesterday","w",encoding="utf-8")
r读取文件打开从上到下开始读 ,读完后光标在文件最后面,第二次读只能重新读、w写入的时候覆盖原文件。
f.write("我爱北京天安门\n") \n 换行
f.write("天安门上太阳升")
a 追加
f = open("yesterday","a",encoding="utf-8")
f.write("我爱北京天安门.......\n") \n 换行
f.write("天安门上太阳升........")
f.readline() 读取一行
f.readlines() 读取文件作为一个列表,一行行读
只能读取小文件到内存中。
for line in f:
print(line)
把文件作为迭代器, 一行行读取文件,并且不占用内存
不会变成列表,没有下标。
自己加计数器
for line in f :
if count == 9:
print("----------我是分割线")
continue
print(line)
count +=1
f = open("yesterday",encoding="utf-8").read()
print(f.tell()) 记数,记数读取多少个字符
f.seek(0) 光标退回到第0个字符
f.flush() 刷新刚刚写入的文件,确保写入到硬盘上
sys.stdout.write(#1") 在屏幕上,标准输出 打印进度条
import sys,time
for i in range(20):
sys.stdout.write("#")
sys.stdout.flush() 实时刷新,没有这个进度条不慢慢走
time.sleep(0.1)
f = open("yesterday","a",encoding="utf-8")
f.truncate(10) 从文件开头截取10个字符
文件既能读又能写,
r+ 读取和追加的形式
f = open("yesterday","r+",encoding="utf-8")
f.write("------------") 在文件最后追加
f = open("yesterday","w+",encoding="utf-8")
print(f.write("------------"))
print(f.write("------------"))
print(f.write("------------"))
print(f.tell)
f.seek(10)
print(f.tell)
print(f.readline())
f.write("should be at the beginnging of the second line")
f.close()
追加只能从最后追加,不能从中间修改
f = open("yesterday","rb",encoding="utf-8") 以二进制的格式读取文件
网络传输,只能用二进制模式传输
f.closed() 看文件是否关闭
f. isatty(终端设备,打印机交互)
f.seekable() 判断能否移动光标
f.readable() 判断文件是否可读
f.writeable()判断文件是否可写