python3 无法将字节转换为对象 'str' 隐式
python3 can't convert bytes to object 'str' implicity
我尝试了其他问题的一些解决方案,但无法解决。这是我的代码:
#/usr/bin/env python
#-*- coding: UTF-8 -*-
import socket
import sys
ip = "192.168.0.28"
port = 21
data = "hckn"*250
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
conn = s.connect((ip,port))
except:
print("[-] Baglanti basarisiz")
sys.exit()
s.recv(1024)
s.send("USER anonymous\r\n".encode('utf-8'))
s.recv(1024)
s.send("PASS anonymous\r\n".encode('utf-8'))
print("[+]Gizli baglanti saglandi")
s.recv(1024)
s.send('MKD'+data+'\r\n'.encode('ascii'))
print("Data yollandı")
s.recv(1024)
s.send('QUIT\r\n'.encode('utf-8'))
s.close()
print("[+]Program yakinda hata verecek...")
当我擦除“编码”并 运行 它 Python2 时,它工作正常。但不是 Python3,它说
s.send('MKD'+data+'\r\n'.encode('ascii'))
类型错误:无法将字节转换为对象'str'隐式
发生这种情况是因为缺少括号:
s.send(('MKD'+data+'\r\n').encode('ascii'))
# ^ ^
但典型的解决方案是只使用字节开头:
data = b"hckn"*250
s.send(b'MKD'+data+b'\r\n')
在那一行:
s.send('MKD'+data+'\r\n'.encode('ascii'))
您需要在 'MKD'+data+'\r\n' 两边加上括号。像这样:
s.send(('MKD'+data+'\r\n').encode('ascii'))
我尝试了其他问题的一些解决方案,但无法解决。这是我的代码:
#/usr/bin/env python
#-*- coding: UTF-8 -*-
import socket
import sys
ip = "192.168.0.28"
port = 21
data = "hckn"*250
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
conn = s.connect((ip,port))
except:
print("[-] Baglanti basarisiz")
sys.exit()
s.recv(1024)
s.send("USER anonymous\r\n".encode('utf-8'))
s.recv(1024)
s.send("PASS anonymous\r\n".encode('utf-8'))
print("[+]Gizli baglanti saglandi")
s.recv(1024)
s.send('MKD'+data+'\r\n'.encode('ascii'))
print("Data yollandı")
s.recv(1024)
s.send('QUIT\r\n'.encode('utf-8'))
s.close()
print("[+]Program yakinda hata verecek...")
当我擦除“编码”并 运行 它 Python2 时,它工作正常。但不是 Python3,它说
s.send('MKD'+data+'\r\n'.encode('ascii'))
类型错误:无法将字节转换为对象'str'隐式
发生这种情况是因为缺少括号:
s.send(('MKD'+data+'\r\n').encode('ascii'))
# ^ ^
但典型的解决方案是只使用字节开头:
data = b"hckn"*250
s.send(b'MKD'+data+b'\r\n')
在那一行:
s.send('MKD'+data+'\r\n'.encode('ascii'))
您需要在 'MKD'+data+'\r\n' 两边加上括号。像这样:
s.send(('MKD'+data+'\r\n').encode('ascii'))