2.2.3.1Python-实例---文件读写

总目录:https://blog.csdn.net/qq_41106844/article/details/105553392

Python - 子目录:https://blog.csdn.net/qq_41106844/article/details/105553333

 

 

新建txt文件“测试1.txt”,“测试2.txt”存放于pycharm项目根目录,测试1.txt文件内存放有《望庐山瀑布》正文。

三种基本的操作模式  r(只读)  w(只写) a(追加)

流程:1 创建文件对象 2 调用文件方法进行操作 3 关闭文件

 

r(只读)

a=open('测试1.txt','r')          #打开文件,选择打开方式为只读

data1=  a.read()                  #读取文件内容,读取方法为全部读取。

print(data1)                    #打印读取内容。

日照香炉生紫烟,

遥看瀑布挂前川。

飞流直下三千尺,

疑是银河落九天。

data2=  a.read(5)                #读取文件内容的前五个字符。

print(data2)                    #打印读取内容。

日照香炉生

a.close                                #关闭文件

 

w(只写)

a=open('测试2.txt','w')                        #打开文件,选择打开方式为只写

a.write("日照香炉生紫烟,")                #写入文件,文件内原内容清空。

data1=a.read()                                   

print(data1)                                   #打印读取内容,查看是否写入。

日照香炉生紫烟,

a.close                                                #关闭文件

 

a(追加)

a=open('测试2.txt','a')                        #打开文件,选择打开方式为追加

a.write("\n遥看瀑布挂前川。\n")         #写入文件,追加到源文件尾部。

data1=a.read()                                   

print(data1)                                   #打印读取内容,查看是否写入。

日照香炉生紫烟,

遥看瀑布挂前川。

a.close                                                #关闭文件

 

其他方法

fileno() 

文件描述符方法(文件操作句柄的标识符,不为零但唯一)在某一时间段内只能有一个操作进程使用。

a=open('测试2.txt','w')                        #打开文件,选择打开方式为只写

print(a.fileno())                               #查看此文件文件描述符

                                                 #此文件在此电脑上此次操作的标识符为3

a.close                                              #关闭文件

 

readline()

读取一行(读取到第一个/n换行符处)

a=open('测试1.txt','r')          #打开文件,选择打开方式为只读

data1=  a.readline()            #读取文件内容,读取第一行

print(data1)                    #打印读取内容。

日照香炉生紫烟,

data2=  a.readline()       

#接着上一个readline后再操作一个则会读取第二行(因为第一个readline操作后标识到第二行处)

print(data2)                    #打印读取内容。

遥看瀑布挂前川。

a.close                                #关闭文件 

 

redlines()

读取所有行

a=open('测试1.txt','r')          #打开文件,选择打开方式为只读

data1=  a.readlines()            #读取文件内容,读取第一行

print(data1)                    #打印读取内容。

日照香炉生紫烟,

遥看瀑布挂前川。

飞流直下三千尺,

疑是银河落九天。

a.close                                #关闭文件

 

指定在一行尾部添加字符

迭代器方法

f=open('测试1.txt','r',encoding='UTF-8')

number=0

for i in f:

    number+=1

    if number == 3:

        i = ''.join([i.strip(), 'iiiii'])

    print(i.strip())

f.close()

日照香炉生紫烟,

遥看瀑布挂前川。

飞流直下三千尺,iiiii

疑是银河落九天。

 

tell()

返回光标当前位置

a=open('测试1.txt','r')          #打开文件,选择打开方式为只读

print(a.tell())                   #打印当前光标位置

0

data1=  a.read(2)       #读取两个字符(中文一个字符两个位置,英文一个。)

print(a.tell())                   #打印当前光标位置

6

a.close                                #关闭文件

 

seek()  

指定光标的位置

a=open('测试1.txt','r')          #打开文件,选择打开方式为只读

print(a.read(2))               #读取两个字符

日照

print(a.read(2))               #再读取两个字符

香炉

a.seek(0)                             #把光标位置设置在0

print(a,read(2))                 #再读取两个字符查看光标是否设置成功

日照

a.close                                #关闭文件

 

truncate()

指定长度的话,就从文件的开头开始截断指定长度,其余内容删除;不指定长度的话,就从文件开头开始截断到当前位置,其余内容删除。

a=open('测试1.txt','r+')       #打开文件,选择打开方式为读写

a.truncate(6)                            #截取6个字符

a.close                                #关闭文件

这时打开文件测试1.txt,发现只有日照香三个字。

 

flush

刷新缓冲区,即将缓冲区中的数据立刻写入文件,同时清空缓冲区,不需要是被动的等待输出缓冲区写入。

#进度条实例

import sys,time

for i in range(30):

    sys.stdout.write("*")

    sys.stdout.flush()

    time.sleep(0.1)

#print的flush

import sys,time

for i in range(30):

    print('*',end='',flush=True)

    time.sleep(0.1)

 

终极问题 如何在磁盘修改文件

常规思路,由于磁盘存储机制不能完成

f=open('小重山.txt','r+',encoding='utf8')

number=0

for line in f:

    number+=1

    if number==3:

        f.write('alex')

 

只能采取重新创建一个文件的思路

f_read=open('小重山.txt','r',)

f_write = open('小重山2.txt','w',encoding='utf8')

number=0

    for line in f_read:

        number+=1

        if number==6:

            line=''.join([line.strip(),'alex\n'])

            # line='hello 岳飞\n'

    f_write.write(line)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寒 暄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值