在python中执行时间段

时间:2016-09-03 07:36:21

标签: python json linux

我想通过发送像

这样的时间段来在shell中运行脚本
./test.py 20160830000 201608311100

如何为以下python脚本执行此操作? st是UNIX时间戳。

#!/usr/bin/python
import requests
from pprint import pprint
import json
import os
import commands
i =  commands.getstatusoutput('date -d "2016-08-30" "+%s"')
j =  commands.getstatusoutput('date -d "2016-08-31" "+%s"')
s = int(i[1])
t = int(j[1])
url = 'http://192.168.1.96/zabbix/api_jsonrpc.php'
payload = {
    "jsonrpc": "2.0",
    "method": "history.get",
    "params": {
        "output": "extend",
        "history": 0,
        "time_from": s,
        "time_till": t,
        "hostsids": "10105",
        "itemids": "23688",
        "sortfield": "clock",
        "sortorder": "DESC"
    },
    "auth": "b5f1f71d91146fcc2980e83e8aacd637",
    "id": 1
}

header = {
    'content-type': 'application/json-rpc',
}
res  = requests.post(url, data=json.dumps(payload, indent=True), headers=header)
res = res.json()
pprint(res)

2 个答案:

答案 0 :(得分:1)

如果我理解正确,您希望从命令行参数中获取在jsonrpc调用中使用的时间戳,而不是使用硬编码日期(由于某种原因,您也要通过命令行进行处理{{1使用不推荐使用的date模块,而不是使用Python的内置commandstime模块,这些模块本身可以处理时间戳和日期。)

这很容易。 Python脚本的命令行参数存储在列表datetime中。列表中的第一个值是脚本的文件名,其余的是参数。您可能需要检查是否有预期的数量!

尝试这样的事情:

sys.argv

有很多替代方法可以处理错误检查,我刚刚为这个例子做了一些事情。你当然应该使用最适合你需求的东西。

答案 1 :(得分:0)

查看time python模块,特别是time.strptime函数,用于将人类可读的时间字符串解析为时间结构,以及time.mktime函数,用于将时间结构转换为unix时间戳。