此篇文章是我关于在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!