*使用input和raw_input都可以读取控制台的输入,但是input和raw_input在处理数字时是有区别的。
1.当输入为纯数字时,Input返回的是数值类型,如int,float。raw_inpout返回的是字符串类型,string类型
2.input会计算在字符串中的数字表达式,而raw_input不会。
def input(prompt):
return (eval(raw_input(prompt)))
eval 函数的功能是将字符串生成语句执行。
*当然使用sys.stdin进行文件读取的时候,使用raw_input而不是input。
dict数据类型存入文件的读写操作源代码:
dbfilename = 'people-file'
ENDDB = 'enddb.'
ENDREC = 'endrec.'
RECSEP = '=>'
def storeDbase(db, dbfilenamedbfilename=dbfilename): #加载dict数据到文件
"formatted dump of database to flat file"
dbfile=open(dbfilename,'w') #文件打开函数open(),w代表写操作
for key in db:
dbfile.write(key+'\n') #文件写操作。不带换行符
for(name,value) in db[key].items():
dbfile.write(name+RECSEP+repr(value)+'\n') #repr函数代表取得字符串规范表示。反引号同样的作用
dbfile.write(ENDREC+'\n')
dbfile.write(ENDDB+'\n')
dbfile.close()
def loadDbase(dbfilenamedbfilename=dbfilename): #读取文件数据到dict函数
"parse data to reconstruct database"
dbfile = open(dbfilename) #默认关键字为‘r’
import sys
sys.stdin = dbfile #sys.stdin 系统输入
db = {} #定义dict
key = raw_input()
while key != ENDDB:
rec = {}
field = raw_input()
while field != ENDREC:
name,value = field.split(RECSEP) #split函数以括号内符号分割字符串
rec[name] = eval(value)
field = raw_input()
print rec
db[key] = rec
key = raw_input()
return db
if __name__ == '__main__':
storeDbase(db)
db1=loadDbase()
db1['tom']['name']='Tom Tomson'
storeDbase(db1)