python练习:4.2.3 文件操作的应用

这篇博客是关于Python编程中文件操作的应用实例,通过6行代码展示了如何进行文件操作的学习和实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python练习:4.2.3 文件操作的应用

出处:毫无障碍学Python

1

 2

3

 

4

5

 

 6

 我的解答:

import os
import ast


long_text ='''
账号、密码管理系统
---------------------
1.输入账号、密码(循环写入)
2.显示账号、密码(读取)
3.修 改 密 码(读取,写入)
4.删除账号、密码(写入)
0.结 束 程 序
---------------------
'''
long_text_2 ='''
    账号			密码
    ================
    '''
long_text_3='''
请输入要修改的账号(Enter==>停止输入)
'''

# 创建1个空字典
users_dirt = {}
# 获取当前脚本的绝对目录的路径
script_path = os.path.dirname(__file__)
# 存档数据的文件名
filename = script_path + '/mySaveFile.json'
# print(filename)  #调试用,注释掉
user_num = None
Esc = 'Esc'

# 输入账号、密码,返回1个元组
def input_account_passwd():
	account = input('请输入账号(Enter==>停止输入):')
	passwd = input('请输入密码:')
	#修改全局作用域下的字典
	users_dirt[account] = passwd
	return (account,passwd)

# 追加写入文件,保存字典格式的文本
def write_into_file(content,filename):
	with open(filename,mode='w',encoding='UTF-8-sig') as fh:
		fh.write(str(content))
		print('已写入文件'+ filename +"。")

# 读取文件并将字符串转换成字典
def show_account_passwd():
	fh = open(filename,mode='r',encoding='UTF-8-sig')
	str_dict = fh.read()
	fh.close()
	global users_dirt  #声明为全局变量
	users_dirt =ast.literal_eval(str_dict)
	print(long_text_2)
	for key,value in users_dirt.items():
		print('  ',key,value,sep='		')

# 更新文件中指定的账号的密码
def edit_account_passwd():
	edit_account = input("请输入要修改的账号(Enter==>停止输入)")
	fh = open(filename,mode='r+',encoding='UTF-8-sig')
	str_dict = fh.read()
	fh.close()
	#先讀取
	global users_dirt  #声明为全局变量
	users_dirt =ast.literal_eval(str_dict)
	print("原密码为:" + users_dirt[edit_account])
	print(' ')  #空行
	new_passwd = input("请输入新密码:")
	#TO DO 判断新密码的复杂度的规则
	users_dirt[edit_account] = new_passwd

	#再寫入
	fh = open(filename, mode='w', encoding='UTF-8-sig')
	fh.write(str(users_dirt)) #把字典轉成字符串再寫入
	fh.close()

def delete_account_passwd():
	fh = open(filename,mode='w',encoding='UTF-8-sig')
	fh.write('这里存放manage.py输出字典格式的文本。')
	fh.close()

#初始化將輸入數字存放到全局變量
def init_start():
	user_select = input('请输入您的选择:')
	#TO DO提示报错,如果输入非选项数字則報錯
	global user_num
	user_num = int(user_select)
	return user_num

def choice_num(num):
	global user_num
	num = user_num
	if num == 1:
		Flag = True
		while Flag:
			information = input_account_passwd() # information是最后输入的一对儿(k,v)
			if information[0] == Esc.lower() or information[1] == Esc.lower():
				break
			write_into_file(content=users_dirt,filename=filename)  # 写入的是字典完整的内容
			print(f'{information[0]}已保存完毕')  # 字符串的格式化输出
			print('用户名或密码:输入esc退出循环。')


	elif num == 2:
		show_account_passwd()  #读取文件内容并打印
	elif num == 3:
		edit_account_passwd() #每次更新一个键值对
	elif num == 4:
		delete_account_passwd() #每次删除一个键值对
	elif num == 0:
		print('程序执行完毕!')
	else:
		print('请输入数字[1,2,3,4,0]选择程序的功能!')


if __name__ == '__main__':
	# 程序运行的起始位置
	print(long_text)
	# 初始化將輸入數字存放到全局變量
	num = init_start()
	# 通過數字調用不同的方法
	choice_num(num)

 

 end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

康冕峰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值