如何查看是否设置了某个(变量)?

时间:2015-02-25 14:41:48

标签: python

这是我的代码:

for msg in mbox:
        try:
            pprint.pprint(msg._headers, stream = f)
            tempdate = parser.parse(msg['Date'])
            newdate = str(tempdate)[:19]
            ip = msg['x-originating-ip']
            iplookup = (ip.strip("[]"))
            url = 'http://freegeoip.net/json/{}'.format(iplookup)
            response = urllib.request.urlopen(url).read()
            result = json.loads(response.decode('utf8'))
            f.write ('Country = ' + (result['country_name']) + '\n')
            f.write ('Region = ' + (result['region_name']) + '\n')
            f.write ('City = ' + (result['city']) + '\n')

但是,并非所有电子邮件都有IP来源。我如何检查是否设置了x orginiting ip?类似于IF staement的东西

       ip = msg['x-originating-ip']

       if (isset(ip):
           iplookup = (ip.strip("[]"))
            url = 'http://freegeoip.net/json/{}'.format(iplookup)
            response = urllib.request.urlopen(url).read()
            result = json.loads(response.decode('utf8'))
            f.write ('Country = ' + (result['country_name']) + '\n')
            f.write ('Region = ' + (result['region_name']) + '\n')
            f.write ('City = ' + (result['city']) + '\n')
        else:
             continue

这是我想到的一个例子,但是isset函数来自php,而不是python?有什么想法吗?

2 个答案:

答案 0 :(得分:1)

尝试

if 'x-originating-ip' in msg:
    ...

它使用in operator。它仅检查密钥是否已设置,而不是值是什么 - 因此它仍然可以是NoneFalse或空字符串或列表或其他内容。您也可以使用'foo' not in x代替not 'foo' in x

例如,如果您想要检查它不是None,请改用get()

if msg.get('x-originating-ip') is not None:
    ...

答案 1 :(得分:0)

您可以使用get。

检查x-originating-ip的值是否已设置
ip = msg.get('x-originating-ip')
if ip: 
    ...
    ....