我在python中创建一个客户端,当我想从.txt文件中使用ip和端口(用空格分隔)将其用于 .sendto(msg,(data) )
import socket
import sys
import os
sUDP = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
file = open("./file.txt")
data1 = file.readline()
msg = "hi"
sUDP.sendto(msg, (data1)) #THE ERROR
./file.txt包含:
127.0.0.1 40000
127.0.0.1 55000
我想sUDP.sendto(msg,(data1))正常工作或知道如何转换第一个读取行以分隔ip和端口以使元组使sendto工作
当我想编译时,这是控制台:
追踪(最近一次通话): 文件“cliente.py”,行什么,在 sUDP.sendto(msg,(data1))#THE ERROR TypeError:getsockaddrarg:AF_INET地址必须是tuple,而不是str
感谢所有帮助我的人!我很快就要完成这项工作
修改 我发现使用.split()我可以使用一个空格来制作两个分开的字符串。我唯一要做的就是使用int(port)将端口转换为int,我们可以创建元组!顺便说一句,我有一个更有效的方法从file.txt制作元组告诉我谢谢你!
答案 0 :(得分:0)
通过这种方式,我有一种更有效的方法,可以通过file.txt告诉我元组
嗯,这肯定不会更有效,因为它与您要做的基本上相同-它只是结合了以下步骤:
data1 = tuple(t(v) for t, v in zip([str, int], open("file.txt").readline().split()))
答案 1 :(得分:-2)
使用tulple只是浪费。 只需在字典中使用集合。
这将是一个很好的选择
所以只需尝试使用列表和词典