*使用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)