python之文件读写

[一般格式:
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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值