1、python2指令碼轉python3報型別錯誤
原因:python3x的string型別與python2x的型別不相同,在python3x中需要將str編碼,如:
套接字的成員函式send
socket.send(bytes[, flags]) 形參為位元組型別
socket.recv(bufsize[, flags]) receive datafrom the socket.the return value is abytesobject representing the data received.
1defdeal(sock, user):
2while
true:
3 data = sock.recv(bufsiz).decode() #
接收使用者的資料45
#print(data)
6print(re.match('
[to:.+]
', data))
7if data == '
quit
': #
使用者退出
8del
clients[user]
9sock.send(data).encode().decode()
10sock.close()
11print('
%s logout
' %user)
12break
13elif re.match('
to:.+
', data) is
not none: #
選擇通訊物件
14 data = data[3:]
15print
(data)
16if data in
clients:
17 chatwith[sock] =clients[data]
18 chatwith[clients[data]] =sock
19else
:20 sock.send('
the user %s is not exist
' %data.encode())
21else:22
if sock in chatwith: #
進行通訊
23 chatwith[sock].send(("
[%s] %s: %s
" %(ctime(), user, data)).encode())
24else
:25 sock.send('
please input the user who you want to chat with
'.encode())
2、python3中使用has_key報錯
原因:python3中已經不包含此 項
解決方法:
用k in dict的方式代替
1while
true:
2print('
waiting for connection...')
3 tcpclisock, addr =tcpsersock.accept()
4print
(tcpclisock,addr)
5print('
...connected from:
',addr)
6 username = tcpclisock.recv(bufsiz).decode() #
接收使用者名稱
7print('
the username is:
',username)
8if username in clients: #
查詢使用者名稱
9 tcpclisock.send("
reuse
").encode() #
使用者名稱已存在
10tcpclisock.close()
11else
:12 tcpclisock.send("
welcome!
".encode()) #
登入成功
13 clients[username] =tcpclisock
14 chat = threading.thread(target = deal, args = (tcpclisock,username)) #
建立新執行緒進行處理
15 chat.start() #
啟動執行緒
python3編碼問題彙總
這兩天寫了個監測網頁的爬蟲,作用是跟蹤乙個網頁的變化,但執行了一晚出現了乙個問題。希望大家不吝賜教!我用的是python3,錯誤在對html response的decode時丟擲,原樣為 response urllib.urlopen dsturl content response.read dec...
Python3 學習中的問題
1.表示式運算子優先順序,如果所有的操作符優先順序相同該怎麼計算優先順序?如果表示式的操作符有相同的優先順序,則運算規則是從左到右計算。比如 1 2 55 88 注意 有乙個特殊的例子,如下這個是從右到左結合計算 python 3.7.4 tags v3.7.4 e09359112e,jul 8 2...
python3語言 Python3學習之語言基礎3
三 判斷 迴圈語句,函式,命名空間,作用域 1 python3 條件控制 python中if語句的一般形式如下所示 python 中用 elif 代替了 else if,所以if語句的關鍵字為 if elif else。注意 1 每個條件後面要使用冒號 表示接下來是滿足條件後要執行的語句塊。2 使用...