• 全部
  • 互动交流
  • 文章分享

Python 模块的参数可以用字典么?哪位大神看看我的代码哪里有问题,报错信息也在的

mygzhh 无业  2018-05-13 11:17:16
需要实现的功能是:
三级菜单
1.从文本内读出选项
2.查询每一级的选项,并能对选项进行增/删/改功能
3.每一级可以退出程序或者返回上一层

思路

三个操作模块,分别是 增/删/改 功能
三个查询模块,分别对每一级别进行查询

报错信息:
Traceback (most recent call last):
File "E:/python/day8/three menu.py", line 79, in <module>
shen()
File "E:/python/day8/three menu.py", line 37, in shen
elif city == 'a':FileAppend(menu)
File "E:/python/day8/three menu.py", line 17, in FileAppend
ExChange()
File "E:/python/day8/three menu.py", line 47, in ExChange
FileWrite.write(menu)
TypeError: expected a string or other character buffer object



# -*- coding: UTF-8 -*-
#__filename:three menu
#__time:2018/5/13 22:04

import io
import os

FileRead = io.open('city','r',encoding='utf8')
FileWrite= open('city_backup','w+')
menu = eval(FileRead.read())

def FileAppend(MenuAppend):

CityAppend = raw_input("请输入添加的城市",)
MenuAppend['CityAppend']={}
ExChange()

def FileDel(MenuDel):
CityDel = raw_input("请输入你要删除的城市",)
MenuDel.pop('CityDel')
ExChange()

def FileChance(MenuChance):
CityChance = raw_input("请输入被替换的城市",)
if CityChance in MenuChance : CityChanced = raw_input("请输入替换的城市",)
MenuChance['CityChanced'] = MenuChance['CityChance']
MenuChance.pop('CityChance')
ExChange()

def shen():
for i in menu:print (i)
city = raw_input('请输入你选择的省份',)
if city == 'q': exit()
elif city == 'd':FileDel(menu)
elif city == 'c':FileChance(menu)
elif city == 'a':FileAppend(menu)
elif (city in menu) and (menu[city]!=0): shi(city)
elif menu[city]==0 :
print "该省下面没有市,请添加"
FileAppend(menu[city])
else:
print '请输入正确的省份'
shen()

def ExChange():
FileWrite.write(menu)
FileRead.close()
FileWrite.close()
os.remove('FileRead')
os.renames('FileWrite','FileRead')

def shi(city):
for i in menu[city]: print (i)
city1 = raw_input('请输入你选择的市或退出程序(Q)或返回上一级菜单(B)').strip()
if city1 == 'b':shen()
elif city1 == 'q':exit()
elif city1 == 'd':FileDel(menu[city])
elif city1 == 'c':FileChance(menu[city])
elif city1 == 'a':FileAppend(menu[city])
elif (city1 in menu[city])and (menu[city][city1]!=0):xian(city,city1)
elif menu[city][city1]==0 : FileAppend( menu[city][city1])
else:
'请输入正确的市'
shi(city)

def xian(city,city1):
for i in menu[city][city1]: print (i)
city2 = raw_input('请选择退出(Q)或返回(B) ')
if city2 == 'b': shi(city)
elif city2 == 'q': exit()
elif city2 == 'd':FileDel(menu[city][city1])
elif city2 == 'c':FileChance(menu[city][city1])
elif city2 == 'a':FileAppend(menu[city][city1])
else:
'请输入正确的区或县'
xian(city, city1)

shen()
...全文
819 点赞 收藏 2
写回复
2 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
mygzhh 2018-05-14
引用 1 楼 qq_26877377 的回复:
def ExChange(): FileWrite.write(menu) FileRead.close() FileWrite.close() os.remove('FileRead') os.renames('FileWrite','FileRead') 这个加一行,应该是menu类型错误了,然后你在改吧 def ExChange(): print(type(menu)) FileWrite.write(menu)
哈哈 懂了 menu的类型是字典,写入文件的应该要是字符串或,谢谢大佬
回复
def ExChange(): FileWrite.write(menu) FileRead.close() FileWrite.close() os.remove('FileRead') os.renames('FileWrite','FileRead') 这个加一行,应该是menu类型错误了,然后你在改吧 def ExChange(): print(type(menu)) FileWrite.write(menu)
回复
相关推荐
发帖
脚本语言
创建于2007-08-27

3.7w+

社区成员

JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
申请成为版主
帖子事件
创建了帖子
2018-05-13 11:17
社区公告

CSDN 脚本语言社区接受专栏投稿(专栏会在顶部创建专属你的栏目),投稿需满足以下要求:

  • 脚本语言技术相关;
  • 文章持续更新,保持活跃;
  • 内容清晰明了,干货为主;
  • 文章排版有序,有条有理。

本社区开通招聘专栏,发布招聘信息请联系版主,发布者需要保证招聘信息真实有效,CSDN 平台和版主不对招聘内容负责!

联系方式:私聊版主、发送邮件、QQ联系等均可: