![](/img/trans.png)
[英]Python Error - AttributeError: 'NoneType' object has no attribute 'split'
[英]Python: Attribute Error(NoneType object has no attribute split)
我试图将一些近似值丢弃。
下面给出的功能是抛出属性错误。 可能是什么问题? 如果可以的话请帮助我。
def calculate_tps(filename,identity):
##command='tshark -r %s -R -T pdml diameter'
first_time = None
last_time=None
tshark='tshark -r %s -R \'(diameter.Destination-Host==%s)&& (diameter.CC-Request-Type==3)\' -T pdml'% (filename,identity)
time = None
req = 0
for line in os.popen(tshark, 'r'):
m=pattern.search(line)
if m:
#print m.group(1)
if m.group(1) == 'timestamp':
time=m.group(2)
if not first_time:
first_time=time
elif m.group(1) == 'diameter.Session-Id':
req +=1
if(req % 100) ==0:
print 'processed 1000 requests req number %s ' % req
# making some approximations discard ms
first = long(first_time.split('.').pop(0))
last = long(time.split('.').pop(0))
time_elapsed = first -last
print "%s requests in %s seconds, tps = %s " % ( req, time_elapsed, req/time_elapsed)
这是完整的代码。 我正在尝试使用tshark计算每秒的请求数。
#!/usr/bin/python
import re
import sys
import commands
import os
import time
pattern = re.compile('<field name="(timestamp|diameter.Session-Id)".*value="([^"]+)')
from optparse import OptionParser
def parse_options():
parser = OptionParser()
# parser.add_option("-f", "--file", dest="filename",
# help="input pcap file", metavar="FILE")
parser.add_option("-i", "--identity", dest="identity",
help="diameter identity to filter on", metavar="IDENTITY")
opts, args = parser.parse_args()
return opts, args
def calculate_tps(filename,identity):
##command='tshark -r %s -R -T pdml diameter'
first_time = None
last_time=None
tshark='tshark -r %s -R \'(diameter.Destination-Host==%s)&& (diameter.CC-Request-Type==3)\' -T pdml'% (filename,identity)
time = None
req = 0
for line in os.popen(tshark, 'r'):
m=pattern.search(line)
if m:
#print m.group(1)
if m.group(1) == 'timestamp':
time=m.group(2)
print 'time is %s' % time
if not first_time:
first_time=time
prin
elif m.group(1) == 'diameter.Session-Id':
req +=1
if(req % 100) ==0:
print 'processed 1000 requests req number %s ' % req
# making some approximations discard ms
first = long(first_time.split('.').pop(0))
last = long(time.split('.').pop(0))
time_elapsed = first -last
print "%s requests in %s seconds, tps = %s " % ( req, time_elapsed,
req/time_elapsed)
def main():
global options
options, args = parse_options()
if len(args) < 1:
print >>sys.stderr, "missing pcap file.Please specify the pcap"
sys.exit(1)
#print options.identity
start_time = time.time()
calculate_tps(args.pop(0), options.identity)
end_time = time.time()
print 'completed in %s', (end_time - start_time)
if __name__ == '__main__':
main()
当您在此处拨打电话时:
first = long(first_time.split('.').pop(0))
last = long(time.split('.').pop(0))
您已经假设每个都是字符串。 在您遍历文件内容期间,似乎未重新分配它们,这表明您没有进行匹配。 您可以将它们包装在条件检查中,如下所示:
if None in (first_time, time):
print "Uh oh, one of first_time or time is None - ", first_time, time
这至少可以为您提供问题的指示器。
这是因为您的第一个和最后一个都不是字符串。 因此,没有类型的属性拆分。 因此,如果需要split属性,最好将它们更改为字符串类型。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.