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

python中对文件的处理的更多相关文章

  1. 关于Python中的文件操作(转)

    总是记不住API.昨晚写的时候用到了这些,但是没记住,于是就索性整理一下吧: python中对文件.文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块. 得到当前工作目录,即当前Pyth ...

  2. python中对文件、文件夹,目录的基本操作

    一.python中对文件.文件夹操作时经常用到的os模块和shutil模块常用方法.1.得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd()2.返回指定目录下的所有文件和目 ...

  3. python中 对文件的读写操作 以及如何边写入 边保存flush()

    转自:https://blog.csdn.net/t8116189520/article/details/78854708 首先 python中打开文件大致常用的几类如下: 1.写入文件write # ...

  4. linux命令(28):Linux下SCP无需输入密码传输文件,python 中scp文件

    python 中scp文件:(如果下面的发送免密码已经完成的话,就直接能用下面这个) os.system('scp "%s" "%s:%s"' % (" ...

  5. [转]python中对文件、文件夹的操作——os模块和shutil模块常用说明

    转至:http://l90z11.blog.163.com/blog/static/187389042201312153318389/ python中对文件.文件夹的操作需要涉及到os模块和shuti ...

  6. Python中的文件和目录操作实现

    Python中的文件和目录操作实现 对于文件和目录的处理,虽然可以通过操作系统命令来完成,但是Python语言为了便于开发人员以编程的方式处理相关工作,提供了许多处理文件和目录的内置函数.重要的是,这 ...

  7. python中对文件、文件夹的操作

    python中对文件.文件夹的操作需要涉及到os模块和shutil模块. 创建文件: 1) os.mknod("test.txt")       创建空文件 2) open(&qu ...

  8. python学习之【第十一篇】:Python中的文件操作

    1.前言 在Python中,对文件的操作主要遵循以下流程: 打开文件,得到文件句柄并赋值给一个变量 通过文件句柄对文件进行操作 关闭文件 2.打开文件 使用open函数,可以打开一个已经存在的文件,或 ...

  9. 【Python】解析Python中的文件操作

    目录结构: contents structure [-] 简介 Python中的文件类型 内置函数的文件操作 open()函数 Mode 创建文本文件 读取文本文件 循环文件对象 关闭文件 With语 ...

  10. Python中对 文件 的各种骚操作

    Python中对 文件 的各种骚操作 python中对文件.文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块. 得到当前工作目录,即当前Python脚本工作的目录路径: os.getc ...

随机推荐

  1. excel省市区三级分类级联

    前言:同事正好需要一个这样的地址类型给用户使用下载模板,改好地址再导入,这样就不会出现地址不匹配问题.所以就自己也整理了一套,以备不时之需. 效果展示: 图一:省级 图二:市级 图三:区级 图四:各乡 ...

  2. mybatis动态sql中的bind绑定

    知识点:bind在模糊查询中的用法 在我的博客    mybatis中使用mysql的模糊查询字符串拼接(like) 中也涉及到bind的使用 <!-- List<Employee> ...

  3. XML CDATA是什么?

    XML CDATA是什么? 投稿:mdxy-dxy 字体:[增加 减小] 类型:转载   这篇文章主要为大家介绍下XML CDATA是什么,学习xml的朋友可以参考下     All text in ...

  4. 51 Nod 1091 线段的重叠

    2017-09-24 19:51:41 writer:pprp 上一个题目就是关于线段重叠最大值,这个是找区间最长重合? 给你n个线段,然后让你在其中选择两条,使两条尽可能重合多一点 解决方法; 1. ...

  5. org.springframework.dao.DuplicateKeyException: a different object with the same identifier value was

    在使用hibernate框架里面的:saveOrUpdate报错: 意思就是另一个对象的id(id同值)已经被session关联了. 原因分析: 在第1步中中通过titleList.get(0)获取一 ...

  6. RocketMQ 自己的整理和理解

    每个人的想法不同, RocketMQ 介绍的时候就说 是阿里从他们使用的上 解耦出来 近一步简化 便捷的 目的当然是 让其能快速入手和开发 如果不是在项目设计层面上 只是使用的话 从Git上下载该项目 ...

  7. sa learning

    后缀数组之前一直在给队友搞,但是这个类太大了,预感到青岛八成会有,于是自己也学习一下,记录一下做题的历程 所用的模板暂时来自于队友的倍增nlogn da算法 int t1[maxn] , t2[max ...

  8. javascript深入浅出

    第一章 数据类型 1,六种数据类型:原始类型(number,string,boolean,null,undefined) + object对象(Function Array Date) 2,隐式转换: ...

  9. 《深入理解mybatis原理3》 Mybatis数据源与连接池

    <深入理解mybatis原理> Mybatis数据源与连接池 对于ORM框架而言,数据源的组织是一个非常重要的一部分,这直接影响到框架的性能问题.本文将通过对MyBatis框架的数据源结构 ...

  10. linux-git shell colors

    git config --global color.status auto git config --global color.diff auto git config --global color. ...