TypeError: str, bytes or bytearray expected, not list
TypeError: str, bytes or bytearray expected, not list
所以我试图从文本文件中提取一些 IP 并在套接字连接中使用该列表。我的问题是我不断收到以下错误:
TypeError:应为 str、bytes 或 bytearray,而不是列表
这是我使用的代码:
import socket
ips = open('list.txt', 'r').readlines()
def displayType(sec_type):
switcher = {
0: "1",
1: "2",
2: "3"
}
print(' type: ' + str(sec_type) + ' (' + switcher.get(sec_type,"Not defined by IETF") +')' )
try:
def check(ip,port):
link = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
link.connect((ip,int(port)))
link_ver = link.recv(12)
print(link_ver)
link.send(link_ver)
nb_sec_types = ord(link.recv(1))
print("types: " + str(nb_sec_types))
check(ips,"80")
如果有人知道如何使用列表中的 ip,那就太好了。
方法 readlines()
读取直到 EOF 和 returns 包含行的列表。所以你在 ips 中得到一个列表。您将需要迭代此列表并在每次迭代时调用 check()。
此外,您使用了 try
块而不使用 except
或 finally
。这将导致错误。
您可以将 catch() 放在 try-except 块中,如下所示:
try:
catch(ip, port)
except Exception as e:
print(str(e))
改变
check(ips, "80)
对于
for ip in ips:
check(ip, "80)
link.connect
需要一个唯一的 ip
而你正在传递一个 ips 列表。
所以我试图从文本文件中提取一些 IP 并在套接字连接中使用该列表。我的问题是我不断收到以下错误:
TypeError:应为 str、bytes 或 bytearray,而不是列表
这是我使用的代码:
import socket
ips = open('list.txt', 'r').readlines()
def displayType(sec_type):
switcher = {
0: "1",
1: "2",
2: "3"
}
print(' type: ' + str(sec_type) + ' (' + switcher.get(sec_type,"Not defined by IETF") +')' )
try:
def check(ip,port):
link = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
link.connect((ip,int(port)))
link_ver = link.recv(12)
print(link_ver)
link.send(link_ver)
nb_sec_types = ord(link.recv(1))
print("types: " + str(nb_sec_types))
check(ips,"80")
如果有人知道如何使用列表中的 ip,那就太好了。
方法 readlines()
读取直到 EOF 和 returns 包含行的列表。所以你在 ips 中得到一个列表。您将需要迭代此列表并在每次迭代时调用 check()。
此外,您使用了 try
块而不使用 except
或 finally
。这将导致错误。
您可以将 catch() 放在 try-except 块中,如下所示:
try:
catch(ip, port)
except Exception as e:
print(str(e))
改变
check(ips, "80)
对于
for ip in ips:
check(ip, "80)
link.connect
需要一个唯一的 ip
而你正在传递一个 ips 列表。