如果之前的磁铁URL相同,则传递声明

时间:2014-10-01 06:51:44

标签: python

我在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语句,但我不确定如何。有什么想法吗?

2 个答案:

答案 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)