Python Can';t转换为';字节';对象隐式转换为str

Python Can';t转换为';字节';对象隐式转换为str,python,string,sockets,byte,Python,String,Sockets,Byte,我制作了一个程序,通过使用套接字库,使用python3.5打开网页。首先,我提示用户输入URL,然后我将split()该URL提取connect()方法的主机名。但我得到以下错误,它指向我的get request命令: cmd='GET'+user\u url+'HTTP/1.0\n\n'.encode()类型错误:无法 隐式地将“bytes”对象转换为str 以下是我的代码: import socket user_url = input("Enter url: ") host_name =

我制作了一个程序,通过使用套接字库,使用
python3.5
打开网页。首先,我提示用户输入URL,然后我将
split()
该URL提取
connect()
方法的主机名。但我得到以下错误,它指向我的get request命令:

cmd='GET'+user\u url+'HTTP/1.0\n\n'.encode()类型错误:无法 隐式地将“bytes”对象转换为str

以下是我的代码:

import socket

user_url = input("Enter url: ")
host_name = user_url.split("/")[2]
mysock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
mysock.connect((host_name, 80))
cmd ='GET ' + user_url + ' HTTP/1.0\n\n'.encode()
mysock.send(cmd)

while True:
   data = mysock.recv(512)
   if (len(data) < 1):
      break
   print (data.decode(),end='')

mysock.close()
导入套接字
用户\ url=输入(“输入url:”)
主机名=用户url.split(“/”[2]
mysock=socket.socket(socket.AF\u INET,socket.SOCK\u流)
mysock.connect((主机名,80))
cmd='GET'+user\u url+'HTTP/1.0\n\n'.encode()
mysock.send(cmd)
尽管如此:
data=mysock.recv(512)
如果(len(数据)<1):
打破
打印(data.decode(),end='')
mysock.close()
这一行只编码最后一部分,不能将字符串类型与字节类型混合,这就解释了错误

例如,您希望对整个字符串进行如下编码:

cmd = ('GET ' + user_url + ' HTTP/1.0\n\n').encode()
最好使用
格式
避免混淆和字符串添加:

cmd ='GET {} HTTP/1.0\n\n'.format(user_url).encode()
哈哈:
cmd=('GET'+user\u url+'HTTP/1.0\n\n')。encode()
(cmd='GET'+user\u url+'HTTP/1.0\n\n')。encode()
cmd ='GET {} HTTP/1.0\n\n'.format(user_url).encode()