Python初学者遇到的一些小问题
1.代码添加中文注释后,在Eric软件下直接运行没有问题,但是在命令行窗口运行不了,错误提示见下图。
2.使用python实现socket通信,server在IDE中运行,client在命令行窗口运行,结果cmd中中文显示乱码。网上搜索了一下,发现原因是cmd中默认GBK编码,而IDE中指定utf-8编码。尝试在cmd中输入chcp 65001,将命令行转换为utf-8代码页,结果还是乱码,于是只能手动修改client代码,转换编码格式,下面是server和client的代码。
1 #!/usr/bin/python 2 # -*- coding: utf-8 -*- 3 # 文件名:server.py 4 5 import socket # 导入 socket 模块 6 7 s = socket.socket() # 创建 socket 对象 8 host = socket.gethostname() # 获取本地主机名 9 port = 12345 # 设置端口 10 s.bind((host, port)) # 绑定端口 11 12 s.listen(5) # 等待客户端连接 13 14 #服务端只进行一次连接 15 while True: 16 c, addr = s.accept() # 建立客户端连接。 17 print '连接地址:', addr 18 c.send('欢迎访问服务端!') 19 c.close() # 关闭连接 20 break 21 print 'exit..'
1 #!/usr/bin/python 2 # -*- coding: utf-8 -*- 3 # 文件名:client.py 在命令行窗口运行,因为命令行默认GBK编码,所以Python2.X环境需要进行编码转换 4 5 import socket # 导入 socket 模块 6 7 s = socket.socket() # 创建 socket 对象 8 host = socket.gethostname() # 获取本地主机名 9 port = 12345 # 设置端口好 10 11 s.connect((host, port)) 12 13 #开始编码转换 14 content = s.recv(1024) 15 content_unicode = content.decode("utf-8") 16 content_gbk = content_unicode.encode("gbk") 17 #转换结束 18 19 print content_gbk 20 #print s.recv(1024) 21 s.close()
3.接上篇博客中提到的函数中添加延时,但界面无法实现先后显示的问题,之前的代码见下图:
后来尝试将类似代码放到线程函数中,运行正常,新代码见下图:
需要注意的是,使用thread模块创建线程时,向线程函数传递的第二个参数得是一个元组,并且元素后接“,”。
thread.start_new_thread( self.slot_B, (0.5, ) )