python3无法将字节转换为对象“str”隐式

2024-09-21 02:49:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着在其他问题上找到一些解决办法,但没能解决。这是我的代码:

#/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'))

TypeError:无法将字节转换为对象“str”隐式


Tags: importipsenddataportsysasciisocket
2条回答

缺少括号是因为:

s.send(('MKD'+data+'\r\n').encode('ascii'))
#      ^                 ^

但典型的解决方案是只使用字节开始:

^{pr2}$

在那条线上:

s.send('MKD'+data+'\r\n'.encode('ascii'))

您需要将parathese放在'MKD'+data+'\r\n'周围。像这样:

^{pr2}$

相关问题 更多 >

    热门问题