代码优化: # 两个参数传入,场景为:指定脚本执行时间范围 elif len(sys.argv) == 3: dates = [] start_time = datetime.strptime(sys.argv[1], '%Y%m%d') end_time = datetime.strptime(sys.argv[2], '%Y%m%d') if start_time >= end_time: print('输入的时间范围错误,开始时间应小于结束时间\n正确示例:python xxx.py 20230510 20230515') else: delta = timedelta(days=1) while start_time <= end_time: dates.append(start_time.strftime('%Y%m%d')) start_time += delta parse_json_data(dates, data_path, insert_db) # 三个参数传入,场景为:执行指定时间范围 和 指定插入数据库 elif len(sys.argv) == 4: insert_db = sys.argv[1] dates = [] start_time = datetime.strptime(sys.argv[2], '%Y%m%d') end_time = datetime.strptime(sys.argv[3], '%Y%m%d') if start_time >= end_time: print('输入的时间范围错误,开始时间应小于结束时间\n正确示例:python xxx.py 20230510 20230515') else: delta = timedelta(days=1) while start_time <= end_time: dates.append(start_time.strftime('%Y%m%d')) start_time += delta parse_json_data(dates, data_path, insert_db)
时间: 2023-12-31 22:05:36 浏览: 370
这段代码可以优化为:
```
if len(sys.argv) not in {3, 4}:
print('参数错误!\n正确示例:python xxx.py 20230510 20230515 [insert_db]')
else:
insert_db = sys.argv[1] if len(sys.argv) == 4 else None
start_time = datetime.strptime(sys.argv[2], '%Y%m%d')
end_time = datetime.strptime(sys.argv[3], '%Y%m%d')
if start_time >= end_time:
print('输入的时间范围错误,开始时间应小于结束时间\n正确示例:python xxx.py 20230510 20230515 [insert_db]')
else:
dates = [(start_time + timedelta(days=i)).strftime('%Y%m%d') for i in range((end_time - start_time).days + 1)]
parse_json_data(dates, data_path, insert_db)
```
这里用了 set 的方式判断输入参数的个数,如果参数个数不是 3 或 4,则直接输出提示信息。如果参数个数为 4,则将 insert_db 赋值为 sys.argv[1],否则为 None。接着用列表推导式生成 dates 列表,避免了 while 循环,并且计算日期范围更加简单。最后直接调用 parse_json_data 函数即可。
阅读全文