python - 修改循环迭代
问题描述
这是我正在使用的抓取脚本的简化版本。我的问题很简单:有没有办法修改循环,以便在最后一次迭代中“跳过” time.sleep()?(我包括了该计时器以避免滥用 api 调用)在最后一次迭代之后,没有下载任何内容,因此 last time.sleep() 不是必需的,我希望代码直接转到脚本的第二部分。
import random
import math
import datetime
from datetime import datetime, timedelta
import time
user_list = ['a', 'b', 'c']
def scraper():
print('Do something')
def parser():
print('Exporting to XLSX')
# First part, downloading.
for user in user_list:
scraper()
# Sleep timer
sleep_seconds = random.randint(300*1000, 600*1000)/1000
print('Sleeping for {} seconds...'.format(sleep_seconds))
# time.sleep(sleep_seconds)
# Second part, parsing.
parser()
输出:
Do something
Sleeping for 494.028 seconds...
Do something
Sleeping for 562.442 seconds...
Do something
Sleeping for 515.752 seconds... (I want to skip this one)
Exporting to XLSX
我正在考虑做类似的事情:
for user in user_list:
if user == user_list[-1]:
print(user)
scraper()
else:
print(user)
scraper()
# Sleep timer
sleep_seconds = random.randint(300*1000, 600*1000)/1000
print('Sleeping for {} minutes...'.format(sleep_seconds))
# Second part, parsing.
parser()
但我不确定这是否是“最佳”方式。
解决方案
一个简单的方法是跟踪我们所在的索引,枚举
>>> data = list(range(10))
>>> lastintex = len(data)-1
>>> for i,x in enumerate(data):
print(x)
if i<lastintex:
print("--")
0
--
1
--
2
--
3
--
4
--
5
--
6
--
7
--
8
--
9
>>>
推荐阅读
- node.js - 如何根据用户角色处理 REST API
- google-bigquery - GA4 事件未出现在 BigQuery 中
- c# - 我的代码没有着色,我的智能感知工作不正常
- javascript - 里程表 JS 类似的类名
- excel - Excel 公式查找哪些匹配行具有最新的日期,然后使用找到的值更新其他行
- java - ZK 如何使用所选项目更新 ListBox ListModel
- javascript - 如何使 Google Apps 脚本向 IE 11 提供 XML?
- java - 无法将类型“[B”编组为元素,因为它缺少 @XmlRootElement 注释
- java - 使用方法通道将 Uint8List 从 Flutter 发送到 Android[Java] 时遇到问题
- material-ui - 具有多个值的文本字段(包含图片以供参考)