[一般格式:
file = open(‘路径/文件名’,’权限’,’语言’)][6]
权限即‘r’,’a’,’w’,’r+’,’a+’,’w+’(读/添加/写/写读/添加读/写读),一般不指定就默认是只读权限;
语言即encoding = ‘ ’,encoding若不指定,则默认jdk内置打开。
常用方法
基于文件句柄 的方法:
方法 | 含义 |
---|---|
teil | 当前内容的位置 |
seek | 定位到某位置 |
readline | 读某行 |
read | 读全部 |
flush | 实时刷新 |
write | 编写 |
replace | 替换内容 |
truncate | 某位置之后全部截断 |
close | 关闭文件 |
可读操作
基于文件句柄的读法,即基于打开文件后的方法调用,例如:
#创建一个file文件
with open("file",'w',encoding='utf-8') as f:
f.write('''唐高宗末年,
高宗(盛鉴 饰)与武则天(刘嘉玲 饰)力排众议出兵攻打敌国,
岂料舰队出海遭遇事故损失惨重。
年少的狄仁杰(赵又廷 饰)初到洛阳便卷入掳掠“花魁”银睿姬一案,
几经破折解救睿姬(杨颖 饰)并获得大理寺卿尉迟真金(冯绍峰 饰)信任,
携尉迟(冯绍峰 饰)与沙陀忠(林更新 饰)一同查办“龙王案”,
而睿姬昔日情郎元镇(金泛 饰)则成为破案关键。
与此同时,
一些神秘事件以及有关皇族的安危的阴谋接连而至,
洛阳城陷入一片危机四伏之中……''')
#read/seek用法
fa = open("file",encoding='utf-8')
print('--------->\n',fa.read(100)) #读取100个字符位
print('---->',fa.tell(),'\n') #打印当前内容的位置
print('---->',fa.seek(210)) #找到指定位置的内容
print('seek:',fa.readline(),'\n')
fa.close()
#怎样实现修改部分文件内容:通过从一个文件copy到另一个文件,更改部分字符
with open("file",encoding='utf-8') as fx, open("file_cp",'w',encoding='utf-8') as fcp:
# 相当于:
# fx = open("file",encoding='utf-8')
# fcp = open("file_cp", 'w', encoding='utf-8')
# fcp.close()
# fx.close()
for line in fx: #每次读一行,占用内存较少
if "刘嘉玲" in line:
line = line.replace("刘嘉玲","yangdanhua")
fcp.write(line)
增删改操作
基于文件句柄的读法,即基于打开文件后的修改文件方法,例如:
f1 = open("file1",'a',encoding='utf-8')
#append ,添加语句,不可读
#添加三条语句
f1.write('尝试添加语句:\n')
f1.write('hellow,yangdanhua\n')
f1.write('ddddddddd')
f1.close()
f2 = open("file1",'r+',encoding='utf-8')
f2.truncate(9) #truncated表示在第九个字符处截断
print(f2.read())
#read之后可在读取点后添加,若未读取则会覆盖文件内容
f2.write('\n000000-----000000000000999999') #添加在最后
f2.close()
#如何实现重复写入
with open('file1','a+',encoding='utf-8') as f4:
for x in range(4):
f4.write('\nread me')
拓展_flush用法
进度条打印:
import sys,time
for i in range(1):
sys.stdout.write("&")
# 每打印一次都要刷新一下,就可显示出当前内容
sys.stdout.flush()
time.sleep(0.1)