操作流程:


打开文件,得到句柄并赋值给一个变量  句柄为读取文件的内存对象

操作文件 关闭文件

打开文件:

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()判断文件是否可写