为什么我的文件读取不到呢
我选择“1”浏览信息的时候没有我建的txt文件内容,我是建在跟py文件同一个目录的。或者是我的主函数写错了??import re
import os
filename="student.txt"
card_list = []
headline=[]
def load_info():
"""从文件导入学生信息"""
fr=open("student.txt",'r')
head=fr.readline()
headline.append(head)
fr.seek(0,0)
lines=fr.readlines()
flied=lines.pop(0).split(',')
for eachline in lines:
t=eachline.split('\t')
t=t.strip('\n')
card_dict={
'num_str':t,
'name_str':t,
'class_str':t,
'sex_str':t,
'age_str':t,
'phone_str':t,
'qq_str':t,
'addr_str':t
}
card_list.append(card_dict)
print('学生信息导入成功!')
fr.close()
def save_info():
fw=open("student.tex",'w')
fw.write(" ",join(headline))
for i in range(len(card_list)):
fw.write(card_list["num_str"]+"\t")
fw.write(card_list["name_str"]+"\t")
fw.write(card_list["class_str"]+"\t")
fw.write(card_list["sex_str"]+"\t")
fw.write(card_list["age_str"]+"\t")
fw.write(card_list["phone_str"]+"\t")
fw.write(card_list["qq_str"]+"\t")
fw.write(card_list["addr_str"]+"\n")
print('学生信息保存成功!')
fw.close()
def show_menu():
"""显示菜单"""
print()
print('*'*70)
print('欢迎使用【学生信息管理系统】')
print()
print('1.浏览全部')
print('2.新增学生')
print('3.搜索学生')
print('4.修改学生')
print('5.删除学生')
print('6.保存信息')
print('0.退出系统')
print('*'*70)
print()
def new_student():
"""新增学生"""
print('-'*70)
print('新增学生')
num_str=input('请输入学号:')
name_str=input('请输入姓名:')
class_str=input('请输入班级:')
sex_str=input('请输入性别:')
age_str=input('请输入年龄:')
phone_str=input('请输入电话:')
qq_str=input('请输入QQ:')
addr_str=input('请输入地址:')
card_dict={ 'num_str':num_str,
'name_str':name_str,
'class_str':class_str,
'sex_str':sex_str,
'age_str':age_str,
'phone_str':phone_str,
'qq_str':qq_str,
'addr_str':addr_str }
card_list.append(card_dict)
print('添加%s的信息成功'%name_str)
def show_all():
"""显示所有学生信息"""
print('-'*70)
print('显示所有学生信息')
if len(card_list) == 0:
print('当前没有任何学生记录,请使用新增功能添加学生信息')
return
for name in ["学号","姓名","班级","年龄","电话","QQ","地址"]:
print(name,"\t",end=" ")
print(' ')
print('-'*70)
#遍历学生信息列表依次输出字典信息
for card_dict in card_list:
print('%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s'% (card_dict['num_str'],
card_dict['name_str'],
card_dict['class_str'],
card_dict['sex_str'],
card_dict['age_str'],
card_dict['phone_str'],
card_dict['qq_str'],
card_dict['addr_str']))
def search_student():
"""搜索学生信息"""
print('-'*70)
print('搜索学生信息')
find_name = input('请输入搜索的姓名:')
for i in range(len(card_list)):
if find_name == card_list['name_str']:
print ("学号\t姓名\t班级\t性别\t年龄\t电话\tQQ\t地址")
print('='*70)
print('%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s' % (card_list['num_str'],
card_list['name_str'],
card_list['class_str'],
card_list['sex_str'],
card_list['age_str'],
card_list['phone_str'],
card_list['qq_str'],
card_list['addr_str']))
break
else:
print('抱歉,没有找到%s'%find_name)
def update_student():
"""修改学生信息"""
find_num = input('请输入待修改学生学号:')
for i in range(len(card_list)):
if find_num == card_list['num_str']:
print("学号\t姓名\t班级\t性别\t年龄\t电话\tQQ\t地址")
print('%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n'%(card_list['num_str'],
card_list['name_str'],
card_list['class_str'],
card_list['sex_str'],
card_list['age_str'],
card_list['phone_str'],
card_list['qq_str'],
card_list['addr_str']))
card_list['name_str'] = input_info(card_list['name_str'],'姓名:')
card_list['class_str'] = input_info(card_list['class_str'], '班级:')
card_list['sex_str'] = input_info(card_list['sex_str'], '性别:')
card_list['age_str'] = input_info(card_list['age_str'], '年龄:')
card_list['phone_str'] = input_info(card_list['phone_str'], '电话:')
card_list['qq_str'] = input_info(card_list['qq_str'], 'QQ:')
card_list['addr_str'] = input_info(card_list['addr_str'], '地址:')
print('修改学生信息成功!!!')
break
else:
print('抱歉,没有找到学号为%s的学生'%find_num)
def input_info(dict_value,tip_message):
"""
:param dict_value: 字典中原有的值
:param tip_message: 输入的提示文字
:return: 如果用户输入了内容,就返回内容,负责返回字典中原有的值
"""
result_str = input(tip_message)
if len(result_str)>0:
return result_str
else:
return dict_value
def delete_student():
"""删除学生信息"""
find_num = input('请输入待删除学生学号:')
for i in range(len(card_list)):
if find_num == card_list['num_str']:
del card_list
print('删除学生信息成功!!')
#以下为主程序
load_info()
def main():
print("学生信息已导入!")
while True:
show_menu()
action_str = input("请选择希望执行的操作:")
print("你选择的操作是%s"%action_str)
if action_str in ["1","2","3","4","5","6"]:
if action_str == "1":
show_all()
elif action_str == "2":
new_student()
elif action_str == "3":
search_student()
elif action_str == "4":
update_student()
elif action_str == "5":
delete_student()
elif action_str == "6":
save_info()
elif action_str == "0":
print("欢迎再次使用【学生信息管理系统】:")
break
else:
print("输入错误,请重新输入:")
if __name__ == '__main__':
main()
输入1的进入show_all()函数,但这个函数没有打开文件。如果是初次运行,字典里也没有数据,自然就是空。
代码里有着几处错处,你自己检查检查吧。
def show_all():
"""显示所有学生信息"""
print('-'*70)
print('显示所有学生信息')
if len(card_list) == 0:
print('当前没有任何学生记录,请使用新增功能添加学生信息')
return# 看这里!python不会执行return下面的代码。
for name in ["学号","姓名","班级","年龄","电话","QQ","地址"]:
print(name,"\t",end=" ")
print(' ')
print('-'*70)
#遍历学生信息列表依次输出字典信息
for card_dict in card_list:
print('%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s'% (card_dict['num_str'],
card_dict['name_str'],
card_dict['class_str'],
card_dict['sex_str'],
card_dict['age_str'],
card_dict['phone_str'],
card_dict['qq_str'],
card_dict['addr_str']))
# python 不会执行 return 下面的代码。 card_list 是空列表, 每次执行程序前已经被初始化 show_all()函数获取的是这个列表的值并不是文件的内容
save_info()函数 join方法前面应该是点 不是逗号 导致报错 君无泪 发表于 2021-12-2 22:11
def show_all():
"""显示所有学生信息"""
print('-'*70)
那怎么才会执行 君无泪 发表于 2021-12-2 22:11
def show_all():
"""显示所有学生信息"""
print('-'*70)
谢谢{:10_254:} C201818z 发表于 2021-12-3 16:41
card_list 是空列表, 每次执行程序前已经被初始化 show_all()函数获取的是这个列表的值并不是文件的内容 ...
谢谢 suchocolate 发表于 2021-12-2 20:44
输入1的进入show_all()函数,但这个函数没有打开文件。如果是初次运行,字典里也没有数据,自然就是空。
...
发现了,谢谢 Gacy 发表于 2021-12-3 21:36
谢谢
# 问题解决了吗?建议你下载个pycharm 写代码时容易发现错误。
def save_info():
fw=open("student.tex",'w')# 这里是 .txt 的,你写成 .tex 了。
fw.write(" ",join(headline))
for i in range(len(card_list)):
fw.write(card_list["num_str"]+"\t")
fw.write(card_list["name_str"]+"\t")
fw.write(card_list["class_str"]+"\t")
fw.write(card_list["sex_str"]+"\t")
fw.write(card_list["age_str"]+"\t")
fw.write(card_list["phone_str"]+"\t")
fw.write(card_list["qq_str"]+"\t")
fw.write(card_list["addr_str"]+"\n")
print('学生信息保存成功!')
fw.close() 君无泪 发表于 2021-12-3 22:06
# 问题解决了吗?建议你下载个pycharm 写代码时容易发现错误。
def save_info():
fw=open("student ...
我就是用pycharm写的{:10_266:},我现在才发现那个错误,已经狠狠抽自己两巴掌了,谢谢靓仔{:10_254:}
页:
[1]