#__author:“Zph”
#date: 2019/12/3
一、文件
对文件操作的流程
打开文件,得到文件句柄并赋值给一个变量
通过句柄对文件进行操作
关闭文件
1.文件的读模式
(1)
data = open('文件示例','r',encoding='utf8').read() #r为读模式
print(data)
f.close()
f = open('文件示例','r',encoding='utf8') #打开文件
data = f.read()
print(data)
data = f.read(5) #取五个字符
print(data)
f.close()
2.文件的写模式
这里的写 会覆盖之前的内容 如果你没有这个文件 会自动创建
f = open('文件示例2','w',encoding='utf8') #w为写模式
f.write('ss')
f.write('zhang') #再次执行 会追加到后面
f.close()
因为写会覆盖,所以用append去追加 追加模式
f = open('文件示例2','a',encoding='utf8')
f.write('hello')
f.close()
4.readlines
f = open('文件示例','r',encoding='utf8')
print(f.readline()) #打印第一行
print(f.readline()) #再次执行 打印下一行
print(f.readlines()) #打印成列表
(1)可以利用循环遍历列表 输出文件
number = 0
for i in f.readlines(): #可以利用循环遍历列表 输出文件
number += 1
if number == 6:
i = ''.join([i.strip(),'iiiii']) #用jon 方法进行字符串的拼接
print(i.strip())
f.close()
number = 0
for i in f: #这是for内部将 i 对象做成一个迭代器,用一个取一个
number += 1
if number == 6:
i = ''.join([i.strip(),'iiiii'])
print(i.strip())
6.tell 查看光标的位置 中文与英文不同 tell一个中文占三个字符
f = open('文件示例','r',encoding='utf8')
print(f.tell())
print(f.read(10))
print(f.tell())
f.close()
7.seek 调整光标的位置
f = open('文件示例','r',encoding='utf8')
f.seek(10)
print(f.read(4))
8.flush 将数据立马写入磁盘
f = open('文件示例','w',encoding='utf8')
f.write('zhang')
f.write('hello')
f.flush()
比如可以用flush作一个进度条
import sys,time
for i in range(30):
sys.stdout.write('*')
sys.stdout.flush()
time.sleep(0.1)
9.truncate 截断 将光标后的内容删除
f = open('文件示例','a',encoding='utf8')
f.seek(20)
f.truncate(2)
f.close()
10.r+ 模式 w+模式 a+模式
(1)r+ 可读可写 不会格式化源文件
f = open('文件示例','r+',encoding='utf8')
print(f.readline())
f.write('zhang')
f.close
(2)w+模式 可读可写 但是会格式化之前的文件
f = open('文件示例','w+',encoding='utf8')
print(f.readline())
f.write('zhang')
print(f.tell())
#可知w+模式的光标是从zhang后开始读
f.seek(0)
print(f.readline()) #为了读出zhang 需要借助tell调整光标
f.close
11.修改文件
f_read = open('文件示例','r',encoding='utf8')
f_write = open('文件示例三','w',encoding='utf8')
number = 0
for line in f_read:
number +=1
if number == 5:
line = 'hello world\n' 修改那一行的内容
line = ''.join([line.strip(),'hello world\n']) #给那一行添加内容
f_write.write(line)
f_read.close()
f_write.close()
12.with
(1)
自动关闭文件 推荐使用with打开文件
with open('文件示例','r') as f:
等同与 f = openopen('文件示例','r')
这两种的区别就在于 with会帮你取去自动关闭文件
(2)with 可以同时操作两个文件
同时管理多个文件对象
with open('文件示例','r') as f_read , open('文件示例三','') as f_write:
for line ....