|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
我在写图书馆管理系统
用了GUI和IO。
可是当我新增书籍时
book_num = Entry()
book_num.grid(row=2,column=4)
book_name = Entry()
book_name.grid(row=3,column=4)
book_author = Entry()
book_author.grid(row=4,column=4)
book_standing= Entry()
book_standing.grid(row=5,column=4)
book_total = Entry()
book_total.grid(row=6,column=4)
def new():#采编入库
if book_num.get() == ""or book_name.get() == ""or book_author.get()== "" or \
book_standing.get()== "" or book_total.get() == "":
messagebox.showerror('出错了!','书籍信息未填全')
else:
with open('D:\\Dpan桌面\\B类题\\图书数据.txt','a') as f:
content =('\n'+ '书号:%s 书名:%s 箸者:%s 现存量:%s 总库量:%s' % \
(str(book_num.get()),str(book_name.get()),str(book_author.get()), \
str(book_standing.get()),str(book_total.get())))
f.writelines(content)
这一步,我发现如果我再新增一次同样名字的书籍,就无法改变现存量和总库量。
有什么好办法可以再加同名字的书籍时,只改变现存量和总库量吗
本帖最后由 txxcat 于 2020-4-13 23:37 编辑
你的文件格式不大适合用pandas处理,pandas最好是存成csv格式,象这样:
- 书号,书名,箸者,现存量,总库量
- 001,零基础入门学习Python,小甲鱼,22,30
- 002,Python袖珍指南,Mark Lutz,11,19
复制代码
我就按你提供的格式来进行处理,文件内容这样:
- 书号:001 书名:零基础入门学习Python 箸者:小甲鱼 现存量:22 总库量:30
- 书号:002 书名:Python袖珍指南 箸者:Mark Lutz 现存量:11 总库量:19
复制代码
代码如下,只是演示,没有容错功能:
- #模拟输入,库存假设已经处理为整数
- book_num='003'
- book_name='零基础入门学习C'
- book_author='小甲鱼'
- book_standing=10
- book_total=10
- f=open('图书数据.txt',encoding='utf-8')
- allbook=[]
- newbook=True
- for i in f:
- if book_num==i[3:i.find('书名')].strip(): #如果发现存在,就把库存数字化进行处理后加入列表
- book_standing+=int(i[(i.find('现存量')+4):i.find('总库量')].strip())
- book_total+=int(i[(i.find('总库量')+4):].split('\n')[0].strip())
- content=i[:i.find('现存量')+4]+str(book_standing)+' 总库量:'+str(book_total)+'\n'
- newbook=False #如果发现存在,则不是新书
- else:
- content =i #其他没动的直接加入列表
- allbook.append(content)
- if newbook: #如果是新书,加入到列表中
- content =('书号:%s 书名:%s 箸者:%s 现存量:%s 总库量:%s\n' % \
- (book_num,book_name,book_author,book_standing,book_total))
- allbook.append(content)
- f.close()
- f=open('图书数据.txt','w',encoding='utf-8') #覆盖老文件
- f.writelines(allbook) #把经过处理的列表写入到文件
- f.close()
复制代码
|
|