python中對文件的處理
阿新 • • 發佈:2017-06-09
and 刪除 eva 改密 名稱 賬號 字典 oat 行為
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中對文件的處理