python对文件的处理_python中对文件的处理

1.当文件中存放的用户名的密码,是以字符串的形式存储时,怎么进行读取和操作

eg:MLing,123456

niuniu,234567

luoluo,345678

方法一:将字符串转为字典

1)字典查找的效率是最高的,首先定义一个字典,存放用户名和密码

2)打开存有用户名和密码的文件,对文件进行读的操作

3)循环文件中的内容,循环的内容是字符串一行为一个字符串如:‘MLing,123456’,用split对内容进行分割:'MLing''123456'

4)对分割的字符串以字符串的形式单独存放,分别作为key和value放到定义的字典里

5)将文件中的用户名和密码,以key和value的形式存在字典之后,判断输入与文件里的内容时,就可以用字典进行操作。

all_users = {}#用来存放所有的用户名和密码

with open('users.txt') as fr:

for line in fr:

up = line.strip().split(',') #分隔账号密码

# print('分隔完之后的账号密码',up)

s_username = up[0]#账号

s_pwd = up[1]#密码

all_users[s_username]=s_pwd#把账号作为key,密码作为value放到用户的字典里

# print(all_users)

print('欢迎登录白羊座商品管理系统'.center(50,'*'))

username = input('输入账号:').strip()

pwd = input('输入密码:').strip()

if username in all_users:

if all_users[username]==pwd:#登录成功

login_tag = True

else:

print('密码不对!')

else:

print('用户不存在')

方法二:将字符串转为列表

1)先定义两个列表,存放用户名和密码

2)循环文件,将内容进行分割,并分别存放在用户名和密码的列表中

3)因为存在的时候,用户名和密码的下标是对应的,可以通过下标判断用户名和密码的一致性

f = open('user.txt','a+')

f.seek(0)#把文件指针移动到最前面

users = []#这个存所有的用户名

pwd=[]#这个存所有的密码

for line in f:

username = line.split(',')[0]

passwd = line.split(',')[1].strip()

users.append(username)

pwd.append(passwd)

print('欢迎使用商品操作程序'.center(50,'*'))

username = input('请输入用户名:').strip()

passwd = input('请输入密码:').strip()

if username in users and passwd ==pwd[users.index(username)]:#判断用户名是否存在

print('恭喜您登陆成功')

else:

print('输入的用户不存在!')

2.当文件中存放的用户名的密码,是以字典的形式存储时,怎么进行读取和操作文件中内容的存在格式如下:

{'luoluo': {'money': 5435, 'passwd': 234567}, 'admin': {'money': '12.12', 'passwd': '123456'}}

1)读取文件里的内容,将文件里的内容转换为字典的格式

2)判断输入的用户名是不是在字典里,如果在的话,判断输入的是不是对应的密码

with open('users.txt') as fr:

fr.seek(0)

user_str = fr.read()

user_dic = eval(user_str) #将字符串转换为字典

if username in user_dic:

if pwd == str(user_dic[username]['passwd']):

print("恭喜您登陆成功!")

log("恭喜%s登陆成功!"%username)

return True

else:

print("输入的密码有误!")

return False

else:

print("您输入的用户名不存在")

return False

3.对文件中的内容进行增加,删除,修改,查询的操作

1)添加用户信息如下格式:注意多个值得时候,需要用下面的格式添加

user_dic[user_name] = {'passwd': user_pwd, 'money': user_money}

2)删除用户信息格式如下:user_dic.pop(del_name)

3)修改用户信息格式如下:注意格式与添加用户是一样的,之后key存在的时候,才可以进行修改,不存在的时候,可以进行添加

user_dic[upadte_name] = {'passwd': new_passwd, 'money': new_money}

4)查询用户信息格式如下:直接根据Key进行查询

def UM(): # 4用户管理

if username == 'admin' and pwd == '123456':

UserM = input("您可对用户进行如下操作:1添加用户,2删除用户,3修改用户信息,4查询用户:")

fu = open('users.txt', 'a+')

fu.seek(0)

user_str = fu.read()

user_dic = eval(user_str)

if UserM == '1': #添加用户信息

user_name = input('请输入添加的用户名:').strip()

user_pwd = input('请输入添加的密码:').strip()

user_money = input('请输入添加的金额:').strip()

if user_name != '' and user_pwd != '' and user_money != '':

if user_name in user_dic:

print('用户名已存在!')

elif is_float(user_money) is not True:

print('您输入的金额不符合小数规则')

else:

user_dic[user_name] = {'passwd': user_pwd, 'money': user_money}

fu.seek(0)

fu.truncate()

fu.write(str(user_dic))

print('用户添加成功')

log("用户%s添加成功!" % user_name)

else:

print('用户名、密码、金额都不能为空')

if UserM == '2': #删除用户信息

del_name = input('请输入你要删除的用户名称:').strip()

if del_name in user_dic:

user_dic.pop(del_name)

fu.seek(0)

fu.truncate()

fu.write(str(user_dic))

print('删除用户成功')

log("用户%s删除成功!" % del_name)

else:

print('您删除的用户不存在')

if UserM == '3':#修改用户信息

upadte_name = input('请输入你要修改的用户名称:').strip()

if upadte_name in user_dic:

new_passwd = input('修改密码为:')

new_money = input('修改金额为:')

user_dic[upadte_name] = {'passwd': new_passwd, 'money': new_money}

fu.seek(0)

fu.truncate()

fu.write(str(user_dic))

print('修改用户成功')

log("用户%s修改成功!" % upadte_name)

else:

print('您修改的用户不存在')

if UserM == '4':#查询用户信息

check_name = input('请输入你要查询的用户名称:').strip()

if check_name in user_dic:

c_pw = user_dic[check_name]['passwd']

c_money = user_dic[check_name]['money']

log("用户%s查询成功!" % check_name)

print('用户名称是:【%s】,用户密码是【%s】,用户余额是【%s】' % (check_name, c_pw, c_money))

else:

print("您查询的用户名不存在!")

return True

else:

print('请输入1-4的选项!')

return False

else:

print("您输入的用户名没有权限")

return False

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值