Python笔记-day6

接着昨天的文件操作,还有一些结尾的东西。
1.混合文件操作:
先看一下我操作的文件,后面的很多操作都在这个文件下进行的:
在这里插入图片描述
这是我乱编的一个文本文件,以下操作就是对这个文件进行的。

# w+:写读   r+:读写,写在文件后面   a+:追加读
f = open("小姐姐联系方式", "r+")
print(f.read())
print(f.tell())  # 237
f.seek(f.tell())  # 不加会默认在文件后直接加
f.write("哦买嘎")  #运行程序"小姐姐"文本后面就添加了 哦买嘎 

这里只操作了常用的"r+",感兴趣的可以自己练一练另外两个。

2.文件修改:

#  文件修改:不是覆盖,而是往后挤
f = open("小姐姐联系方式", "r+")

# 1. 加载到内存
data = f.read()
new_data = data.replace("岳妮妮", "haha") #运行后,文本里的岳妮妮被haha替换

# 2.清空文件
f.seek(0)
f.truncate()  # 截断文件

# 3. 把新内容写回硬盘
f.write(new_data)
f.close()

3.练习:全局检索替换

#全局文本检索替换脚本
import sys

print(sys.argv)
old_str = sys.argv[1]
new_str = sys.argv[2]
filename = sys.argv[3]
# 1. 加载到内存
f = open(filename, "r+")
data = f.read()
# 2. 计数和替换
old_str_count = data.count(old_str)
new_data = data.replace((old_str, new_str))
# 3.清空文件
f.seek(0)
f.truncate()
# 4.把新内容写到文件
f.write(new_data)
f.close()
print(f"成功替换字符‘{old_str}'to'{new_str}',共{old_str_count}处...")

这是练习文本修改的步骤操作,可以按自己需求模仿去练一练。

4.设计用户登录程序
(要求:若用户密码输入错误3次,则锁定账号)

首先,这是我自己定义的一个用户信息仓库:(姓名,密码,账户状态)
在这里插入图片描述
这里账户状态为1,则为锁定状态,为0则为正常状态。


#1.确定 在文件里存储的账号信息结构

#2. 把数据读到内存,为方便调用,改成列表结构list或字典
accounts = {
    # 定义一个空字典
}
f = open("account.db", "r")
for line in f:
    line = line.strip().split(",")  # strip 吃空格
    accounts[line[0]] = line

# 3. 搞个循环。要求用户输入信息,判断

while True:
    user = input("Username:").strip()
    if user not in accounts:
        print("该用户未注册...")
        continue
    elif accounts[user][2] == "1":
        print("该账户已锁定,请联系客服解决...")
        continue
    count = 0
    while count < 3:  # 控制密码输入次数
        passwd = input("Password:").strip()
        # 去账号的字典里判断密码是否正确
        if passwd == accounts[user][1]:
            print(f"Welcome{user}...登录成功...")
            exit("bye bye...")
        else:
            print("密码错误....")
        count += 1
    if count == 3:
        print(f"输错了{count}次密码,锁定账号{user}...")
        # 1.先改内存中字典里的账号信息的用户状态
        # 2.把字典里的数据信息按源数据格式存回文件
        accounts[user][2] = "1"   # 1代表账户锁定
        f2 = open("account.db", "w")
        for user, val in accounts.items():
            line = ",".join(val) + "\n"
            f2.write(line)
        f2.close()

        exit("bye bye...")

这是程序运行效果:
在这里插入图片描述
在这里插入图片描述
这分别是账户锁定登录失败,密码输入错误,账号锁定以及正常成功登录,要求的功能都成功时下。

5.初识函数:

 #函数: 减少重复代码; 使程序变得可扩展; 使程序变得易维护
# 函数的定义:
def Add():  # 函数名
    print("这是加法")


Add()  # 调用函数


def Add(a, b):  # 带参数
    c = a + b
    print(c)


Add()

自定义函数:

def hello(name, age):
    print(f"hello,my name is {name},this year {age} years old..")


hello("DaoNan", "22")

函数运行效果:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值