2 回答

TA貢獻1795條經驗 獲得超7個贊
字節串由 b 前綴表示。雖然您可以在打印輸出中看到字符串,但它們本質上是字節。
要從中獲取普通字符串,decode
函數可以提供幫助。
dataStr.decode("utf-8")

TA貢獻1810條經驗 獲得超5個贊
b'data'僅表示引號內的數據已以字節形式接收,如其他答案中所述,您必須對其進行解碼才能以decode('utf-8')字符串形式獲取它。
我已經在下面更新了您的程序,以兼容 v3.7+
from socket import *
isoCmd = ['auto','100','200','300','400','500','640','800']
HOST = ''
PORT = 21567
BUFSIZE = 1024
ADDR = (HOST,PORT)
brightness = 50
timelapse = 0
tcpSerSock = socket(AF_INET, SOCK_STREAM)
tcpSerSock.bind(ADDR)
tcpSerSock.listen(5)
while True:
print ('Waiting for connection')
tcpCliSock,addr = tcpSerSock.accept()
try:
while True:
data = ''
brightness = ' '
data = tcpCliSock.recv(BUFSIZE).decode('utf-8')
print ("Here's data "+data)
if not data:
break
if data in isoCmd:
if data == "auto":
camera.iso = 0
print ('ISO: Auto')
else:
camera.iso = int(data)
print ('ISO: '+ data)
except Exception as e:
print(e)
添加回答
舉報