文件操作流程

文件操作流程

1.打开文件,得到文件句柄并赋值给一个变量

2.通过句柄对文件进行操作

3.关闭文件

最基本的打开,只能阅读,不能操作.data = open("file",encoding="utf-8").read()

print(data)
print(type(data)) #字符串格f = open("file","r",encoding="utf-8") 文件句柄赋值给f
data = f.read()
data2 = f.read() 当这里读取时,python将从上次data读取的最后开始读取,也就是什么也没有。
r 读取文件 不能写;
w 创建一个文件 不能读;
a 追加内容 不覆盖文件,不能读取。
f.read() 阅读
f.write() 写文件
注意:
U表示在读取时,可以将\r\n自动替换成\n(与r或r+模式同使用)
rU
r+U
b表示处理二进制文件(如:FTP发送上传文件,linux可忽略,windows处理二进制文件时需要标注)
读取前五行方法一、
f = open("file","r",encoding="utf-8")
print(f.readline())
print(f.readline())
print(f.readline())
print(f.readline())
print(f.readline())
f.close()方法二、
f = open("file","r",encoding="utf-8")
for i in range(5):
print(f.readline())
f.close()
第五行不打印f.readlines() 是一个列表,
f = open("file","r",encoding="utf-8")
for i in f.readlines():
print(i.strip()) 每行后面默认有一个换行符,用strip去掉;方法一、
f = open("file","r",encoding="utf-8")
for index,i in enumerate(f.readlines()):
if index == 4:
print("------分割线--------")
continue
print(i.strip())方法二、
f = open("file","r",encoding="utf-8")
count = 0
for i in f: f已经成为一个迭代器
if count == 4:
print("------分割线-------")
count += 1
continue 结束本次循环,进行下一次循环
print(i.strip())
count += 1
文件方法:
f = open("file","r",encoding="utf-8")
查看当前指针位置print(f.tell())
print(f.readline())
print(f.tell())
指针回到文件开头f.seek(0)
print(f.tell())
查看文件编码print(f.encoding)
做异常处理 f.errors
查看是不是一个终端设备print(f.isatty())
判断光标是否可以移动,可以True 否则Falseprint(f.seekable())
判断文件是否可读print(f.readable())
判断文件是否可写print(f.writable())
强制刷新;用于实时将写的数据写到硬盘上;print(f.flush())
flush 事例进度条import sys,time
for i in range(100):
sys.stdout.write(" ")
for i in range(100):
sys.stdout.write(" ")
sys.stdout.flush()
time.sleep(0.1)
判断文件是否关闭print(f.closed)
截断f = open("file","a",encoding="utf-8")
f.truncate() 不加参数清空文件
f.truncate(10) 从文件开始截断10个字节
文件读写模式打开(读和追加写)f = open("file","r+",encoding="utf-8")
print(f.readline())
f.write("===============")
print(f.readline())
f.close()
文件写读模式打开(创建一个新文件写和读,然后在追加写。)f = open("file","w+",encoding="utf-8")
print(f.readline())
f.write("===============\n")
f.write("===============\n")
print(f.seek(10))
print(f.readline())
f.write("+++++++++++++++\n")
print(f.seek(10))
print(f.readline())
f.close()
文件追加读写模式打开(可以追加写和读)f = open("file","a+",encoding="utf-8")
print(f.tell())
print(f.readline())
f.write("===============\n")
f.write("===============\n")
print(f.seek(10))
print(f.readline())
f.write("+++++++++++++++\n")
print(f.seek(10))
print(f.readline())
f.close()
文件二进制编码方式读;应用于网络传输f = open("file","rb")
print(f.readline())
文件二进制编码方式写;应用于网络传输f = open("file","wb")
print(f.write("hhhhhhh".encode())) 默认是utf-8模式
f.close()
文件二进制编码方式追加;应用于网络传输f = open("file","ab")
print(f.write("hhhhhhh".encode())) 默认是utf-8模式
f.close()
文件修改
1.全部加载到内存里,重新写到文件里
2.修改后,写在另一个文件里f = open("file","r",encoding="utf-8")
f2 = open("file2","w",encoding="utf-8")
for i in f:
if "2222" in i:
i = i.replace("2222","BBBB") #i.replace替换功能
f2.write(i)
f.close()
f2.close()
文件操作自动关闭with
特点:自动关闭文件。
为了避免打开文件后忘记关闭,可以通过管理上下文。例如:with open("file","r")as f:
print(f.readline())
python2.7以后可以同时打开多个文件。with open("file","r") as f,\
open("file2","r") as f2:
for i in f:
print(i.strip())
for i2 in f2:
print(i2.strip())

(python官方要求:一行代码不要超过80个代码;)