您的位置:首页 > 编程语言 > Python开发

学习笔记 提取常量和一个简单的聊天系统(python)from python基础教程

2015-10-22 14:39 666 查看
提取常量:将数据中的常量和配置常量保存的文件中,写程序时在文件中可以直接提取.txt[nember]pi: 3.1415926[message]greeting: welcome questing:put in radius:result:The area istest.pyfromConfigParser import ConfigParserCONFIGFILE='文件存放地址'config=ConfigParser()config.read(CONFIGFILE)printconfig.get('message','greeting')radius=input(config.get('message','questing')+'')printconfig.get('message','result')printconfig.getfloat('number','pi')*radius**2可以用telnet访问的聊天系统
# -*- coding: utf-8 -*-from asyncore import dispatcherfrom asynchat import async_chatimport socket,asyncorePORP=5005NAME='TestChat123'class CommandHandler:def unknown(self,session,cmd):session.push('Unknown command: %s\r\n'% cmd)def handle(self,session,line):if not line.strip():returnparts=line.split(' ',1)cmd=parts[0]try:line=parts[1].strip()except IndexError:line=''meth=getattr(self,'do_'+cmd,None)try:meth(session,line)except TabError:self.unknown(session,cmd)class Room(CommandHandler):def __init__(self,server):self.server=serverself.sessions=[]def add(self,session):self.sessions.append(session)def remove(self,session):self.sessions.remove(session)def broadcast(self,line):for session in self.sessions:session.push(line)class LoginRoom(Room):def add(self,session):Room.add(self,session)self.broadcast('welcome to %s \r\n'% self.server.name)def unknown(self,session,cmd):session.push('Please log in\r\n')def do_login(self,session,line):name=line.strip()if not name:session.push('Please enter a name\r\n')elif name in self.server.users:session.push('The name %s is taken\r\n'%name)session.push('Please enter a name\r\n')else:session.name=namesession.enter(self.server.main_room)class ChatRoom(Room):def add(self,session):Room.add(self,session)self.broadcast(session.name+' has entered the room\r\n')self.server.users[session.name]=sessiondef remove(self,session):Room.remove(self,session)self.broadcast(session.name+' has left the room\r\n')def do_say(self,session,line):self.broadcast(session.name+': '+line+'\r\n')def do_look(self,session,line):session.push('in this room: ')for other in  self.sessions:session.push(other.name+'\r\n')def do_who(self,session,line):session.push('in login')for name in  self.server.users:session.push(name+'\r\n')class LogoutRoom(Room):def add(self,session):try:del self.server.users[session.name]except KeyError:passclass Chatsession(async_chat):def __init__(self,server,sock):async_chat.__init__(self,sock)self.server=serverself.set_terminator('\r\n')self.data=[]self.name=Noneself.enter(LoginRoom(server))def enter(self,room):try:cur=self.roomexcept AttributeError:pass        else:cur.remove(self)self.room=roomroom.add(self)def collect_incoming_data(self, data):self.data.append(data)def found_terminator(self):line=''.join(self.data)self.data=[]try:self.room.handle(self,line)except EnvironmentError:self.handle_close()def handle_close(self):async_chat.handle_close(self)self.enter(LogoutRoom(self.server))class ChatServer(dispatcher):def __init__(self,port,name):dispatcher.__init__(self)self.create_socket(socket.AF_INET,socket.SOCK_STREAM)self.set_reuse_addr()self.bind(('',port))self.listen(5)self.name=nameself.users={}self.main_room=ChatRoom(self)def handle_accept(self):conn,addr=self.accept()Chatsession(self,conn)if __name__=='__main__':s=ChatServer(PORP,NAME)asyncore.loop()

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python 聊天 提取常量