2.5.2 文件的操作
2.5.2 文件操作
1,文件流程控制
- 打开文件,得到文件句柄并赋值给一个变量。
- 通过句柄对文件进行操作。
- 关闭文件。
注意:文件句柄包含文件的存储路径,文件名,文件内容,文件指针等等信息。
2,基本操作
- 实例一:
f = open('lyrics') #打开文件
first_line = f.readline()
print('first line:',first_line) #读一行
print('我是分隔线'.center(50,'-'))
data = f.read()# 读取剩下的所有内容,文件大时不要用
print(data) #打印文件
f.close() #关闭文件
3,打开文件的模式有
- r,只读模式(默认)。
- w,只写模式。【不可读;不存在则创建;存在则删除内容后修改;】
- a,追加模式。【可读; 不存在则创建;存在则只追加内容;】
"+" 表示可以同时读写某个文件
- r+,可读写文件。【可读;可写;可追加】
- w+,写读
- a+,同a
"U"表示在读取时,可以将 \r \n \r\n自动转换成 \n (与 r 或 r+ 模式同使用)
- rU
- r+U
"b"表示处理二进制文件(如:FTP发送上传ISO镜像文件,linux可忽略,windows处理二进制文件时需标注)
- rb 以二进制读模式打开以二进制读模式打开
- wb 以二进制写模式打开以二进制写模式打开
4,文件读取
# f.readline f 一次将文件全部加载内存,适合度小文件
# for line in f: print(line) 迭代循环一行行读,节约内存
5,文件方法
# 计算光标当前位置,按照字符位置来不是按照行数。
f.tell()
# 让文件指针指到指定位置
f.seek(10)
# 查看文件编码
f.encoding()
# 查看文件存在内存中的编码
f.fileno()
# 将内存中的文件信息刷新到磁盘,防止数据丢失
f.flush()
# 从文件开头截断到指定的位置
f.truncate()
# 关闭文件f
f.close()
- 实例二:
# 进度条
import sys,time
for i in range(100):
time.sleep(0.1)
sys.stdout.write("#")
sys.stdout.flush()
6,使用with打开文件
# 为了避免打开文件后忘记关闭,可以通过管理上下文,即:
with open('log','r', encoding="utf-8") as f:
with open('log1','r', encoding="utf-8") as f1,open('log1','r', encoding="utf-8") as f1: