我在python 2.7中编写一个简单的脚本,每秒通过UDP接收多个数据集。然后将每个数据集放入单独的磁铁URL并打开它们。
很多时候,数据集可能与前一个数据集相同,因此我不想多次打开相同的磁铁网址。
以下是我的代码的一部分:
while True:
var = s.recv(30)
url = "magnet://myhost.com/{0}".format(var)
os.startfile(url)
例如,我可以收到以下数据集:
a
a
a
b
b
a
a
e
e
e
基本上,如果两个数据集相同,则会生成相同的磁铁URL。在上面的例子中,我希望它打开第一个磁铁URL(a),但跳过(传递)接下来的两个a#。然后打开第一个b网址但跳过下一个b。如果再次发送数据集a,则打开第一个但跳过以下a。等等。
我猜我可以使用if / else和pass语句,但我不确定如何。有什么想法吗?
答案 0 :(得分:0)
您可以构建以前看过的set
项:
seen = set()
while True:
var = s.recv(30)
if var not in seen:
url = "magnet://myhost.com/{0}".format(var)
os.startfile(url)
seen.add(var)
答案 1 :(得分:0)
好的,如果您只需要跳过一个值,如果它与前一个值相同,只需使用一个简单的变量来跟踪它:
old = None
while True:
var = s.recv(30)
if var != old:
old = var
url = "magnet://myhost.com/{0}".format(var)
os.startfile(url)