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
时间: 2024-10-13 15:57:33

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

python中对文件、文件夹的操作需要涉及到os模块和shutil模块。

创建文件:1) os.mknod("test.txt") 创建空文件2) open("test.txt",w) 直接打开一个文件,如果文件不存在则创建文件 创建目录:os.mkdir("file") 创建目录 创建多层新目录:def mkdirs(path): # 去除首位空格 path=path.strip() # 去除尾部 \ 符号 path=path.rstrip("\\") # 判断路径是否存在 # 存在 True #

python中关于文件的操作

今天让我们来一起学习一下python中关于文件的操作吧: 先看看以下如果打开文件: #open()打开文件的方法:r参数只能以读的方式打开文件,不能写 =(,,=)data=.read()(data)

解决 python 中读写文件的终极方案 UnicodeDecodeError: 'gbk' codec can't decode byte 0x9d in position 1270: illega

UnicodeDecodeError: 'gbk' codec can't decode byte 0x9d in position 1270: illegal multibyte sequence 上面是遇到的错误,本来想完成读文件,再写入另一文件的.但是在 fp.read() 时,一直遇到上面的错误,经过各种百度,google, 还有神奇的 stackoverflow 才知道是字符流的问题. 知道问题所在,还是没有解决,又苦苦搜索,终于在 stackoverflow 上找到灵感,可以把 op

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

目录结构: contents structure [-] 简介 Python中的文件类型 内置函数的文件操作 open()函数 Mode 创建文本文件 读取文本文件 循环文件对象 关闭文件 With语句 os模块 fileinput模块 1.简介 在Python中无需引入额外的模块来进行文件操作,Python拥有内置的文件操作函数(除了内置文件操作函数,Python语言也提供了额外的文件操作模块,它们具有更加强大的功能). os模块提供了在操作系统上可移植的文件操作方法.如果只是想要读取和写入数

python中的文件操作open()函数

文件操作: 1.关于open 模式: r     以读方式打开,    f=open(r"C:\Users\shaopeng\Desktop\py_homework\DAY6\readme.txt","r") w     以写方式打开,  如果文件存在则会清洗掉原文件的内容,然后把写的东西写进新文件 f=open(r"C:\Users\shaopeng\Desktop\py_homework\DAY6\readme.txt","w&qu

python中使用文件的读取和简单正则使用(一)

p { margin-bottom: 0.25cm; line-height: 120% } 今天想写个程序合并文件的,以前一直觉得python的编码解码好烦,只要处理文件合并之类的都是用C# 写,但是最近用的是linux,也没有vs,就只能乖乖的用python 写了,早上看了下,也没有我想的负责,只能说以前太那啥了....好了,闲话少说,下面先简单介绍下文件读取操作吧. 首先说明的是我用的python2.7,python读取文件内容主要有下面几种常用方法:先来个测试,方面大家可以清晰了解每种方

Python中的文件和目录操作实现代码

对于文件和目录的处理,虽然可以通过操作系统命令来完成,但是Python语言为了便于开发人员以编程的方式处理相关工作,提供了许多处理文件和目录的内置函数.重要的是,这些函数无论是在Unix.Windows还是Macintosh平台上,它们的使用方式是完全一致的. 本文将详细解释这些函数的使用方法.首先,我们介绍Python语言中类似于Windows系统的dir命令的列出文件功能,然后描述如何测试一个文件名对应的是一个标准文件.目录还是链接,以及提取文件大小和日期的方法.之后,我们还将介绍如何删除文

python 中有关文件处理

Python的文件处理 打开文件f = open ("path","mode") r 模式以读的方式打开,定位到文件开头 , 默认的 mode.文件不存在直接报错,文件只能读取,不能写入. r+模式以读写的方式打开,定位文件开头 , 可以写入内容到文件 w 模式以写的方式打开,打开文件的时候会清空文件的内容,并且不能读 w+模式以读写的方式打开,定位到文件头,并且打开文件的时候也会清空文件的内容 a模式以写的方式打开,定位到文件的末尾,是一个追加的操作 , 但并不允

Python中读取文件输出时在头部输出\ufeff

问题出现: 在我测试python中的文本文件的读取与写入时,用到了字典对象来存储读出的数据. 1 std_data = dict() 2 with open(sys.argv[1], encoding='UTF-8') as fp: 3 alldata = fp.readlines() 4 for item in alldata: 5 no, name = item.rstrip('\n').split('.') 6 std_data[no] = name 7 print(std_data) 在

在Python中对文件和目录进行操作

文件与目录操作是编程语言中非常重要的功能,Python也对其提供了相应的API支持,这篇博文就是具体介绍它们的使用方法. 一.文件打开和关闭操作 对文件进行操作在Python中分为3个步骤,首先要打开文件,然后是对文件进行读写操作,最后需要关闭文件. 1.打开文件使用的是open()函数,它提供初始化输入.输出(I/O)操作的通用接口,成功打开文件后返回一个文件对象,打开失败则引发一个错误.打开文件的语法如下: file_object = open(file_name,access_mode [