修改和删除文本文件指定内容

此篇文章是我关于在Python下使用文本文件(代替数据库操作)后,记录相关操作

一、读写文件前打开文件的方法:

第一种:通过 with open() as fp 打开文件

# 'rb'表示打开文件的方式为 --只读+二进制, 具体方式自己决定

with open("studentTable.txt", 'rb') as f:

# 这种打开文件的方式不需要 fp.close()来关闭文件,自动关闭更方便

第二种:通过 fp = open() 打开文件 ,但是使用完文件后,                    需要 fp . close() 关闭文件

fp = open('user_info.txt', 'r')

打开文件的方式很重要,对你后续的文件操作有影响,通常都是以 ‘r’ 只读模式(只需要注意文件是否存在就行)打开文件,再做其他操作。特别是不要轻易选 'w' 覆盖写模式(文件不存在则创建、但是存在就覆盖原文件

二、两次打开文件达到修改文本文件的目的:

1.with open("文件名.txt", "r") as fp:                                                                with open("同一文件", "w") as f:

2.删除文本文件指定内容,如下面代码:使用 continue                      用跳过写入文件的方式达到删除指定内容的目的!

#千万不要直接用 ‘w’、‘w+’等会导致文件覆盖的模式,去修改文件

username = input("请输入你要删除的账户名:")
with open("user_info.txt", "r") as fp:
    lines = fp.readlines()         # 读取出文档中的内容为一个列表类型,也就是说lines是一个列表
    '''
    先用 ‘r’ 打开文件,再用 ‘w’ 进行覆盖写
    '''
    with open("user_info.txt", "w") as f:
        for line in lines:               # 文件读取的常用操作: for line in ...(遍历每一行)
            '''用跳过写入文件的方式达到删除该行'''
            if line.split(',')[0] == username:  # split(',')[0] 表示 用逗号隔开的第一个字符串 
                continue                 
            f.write(line)

3.修改文本文件指定内容,如下面代码:使用 continue                           在指定行,先单独写入修改的内容,跳过所有行的写入,来修改该行!

username = input("请输入你要修改的账户名:")
    with open("user_info.txt", "r") as fp:
        lines = fp.readlines()
        for line in lines:
            if line.split(',')[0] == username:
                password = input("新的密码: ")
                option = 'B'
                with open("user_info.txt", "w") as f:
                    for line1 in lines:     #line、line1都是遍历的lines,但是必须用不同变量名
                        '''在指定行,先单独写入修改的内容,跳过所有行的写入来修改该行'''
                        if line1.split(',')[0] == username:
                            f.write(username + ',' + password + ',' + option + '\n')
                            continue
                        f.write(line1)

三、解决 open() 读文件总是把每行的换行符(‘\n’)一起读入的问题:

Python按行读取文本文件,内容中总是会伴随一个换行符,由于换行符总是最后一个字符,于是乎

解决方法:【0:-1】 在显示的时候,只读取第一个到倒数最后一个(不包含最后一个换行符)。

fp = open('user_info.txt', 'r')
    lines = fp.readlines()
    for line in lines:
        if line.split(',')[2] == 'B\n':    # 我这里的'B'属于一行的最后一个字段,换行带有\n
            print(line[0:-1])  
# 读取并输出line中第一位到倒数第一位(不包含最后一位): 这里不读换行符\n(文本文件里常有换行符)
    fp.close()   # 关闭文件

如下图我调试的实际环境,结果如下:

 宝剑锋从磨砺出,梅花香自苦寒来!

如果看到这里对各位有帮助的话,记得点赞收藏。My pleasure!

  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Leo桑

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

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

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

打赏作者

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

抵扣说明:

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

余额充值