鱼C论坛

 找回密码
 立即注册
查看: 1091|回复: 8

[已解决]local variable 'receive' referenced before assignment报错我该怎么处理呢

[复制链接]
发表于 2018-7-20 10:54:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 akun1111 于 2018-7-20 10:56 编辑

求大神指点一二

#/usr/bin/python
#encoding:utf-8
import csv
import os
import string
import time


#控制类
class Controller(object):
    def __init__(self, count):
        #定义测试的次数
        self.counter = count
        #定义收集数据的数组
        self.alldata = [("timestamp", "traffic")]

    #单次测试过程
    def testprocess(self):
        #执行获取进程的命令
        result =os.popen('adb -s 1A0B601D  shell "ps  | grep com.carbon.carbonpedestrian"')
        #获取进程ID
        pid = result.readlines()[0].split(" ")[5]

        #获取进程ID使用的流量
        traffic = os.popen('adb -s 1A0B601D  shell "cat /proc/ '+ pid + '/net/dev"')
        for line in traffic:

            if "wlan0" in line:
                #将所有空行换成#
                line = "#".join(line.split())
                print('5')
                #按#号拆分,获取收到和发出的流量

                receive =( line.split("#")[1])
                transmit = (line.split("#")[9])

                print('6')
            # elif "eth1" in line:
            #     # 将所有空行换成#
            #     line =  "#".join(line.split())
            #     # 按#号拆分,获取收到和发出的流量
            #     receive2 = line.split("#")[1]
            #     transmit2 = line.split("#")[9]

        #计算所有流量的之和
        alltraffic = int(receive)+int(transmit)
        #按KB计算流量值
        alltraffic = alltraffic/1024
        #获取当前时间
        currenttime = self.getCurrentTime()
        #将获取到的数据存到数组中
        self.alldata.append((currenttime, alltraffic))

    #多次测试过程控制
    def run(self):
        while self.counter >0:
            self.testprocess()
            self.counter = self.counter - 1
            #每5秒钟采集一次数据
            time.sleep(5)

    #获取当前的时间戳
    def getCurrentTime(self):
        currentTime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
        return currentTime

    #数据的存储
    def SaveDataToCSV(self):
        csvfile = file('traffic.csv', 'w')
        writer = csv.writer(csvfile)
        writer.writerows(self.alldata)
        csvfile.close()

if __name__ == "__main__":
    controller = Controller(5)
    controller.run()
    controller.SaveDataToCSV()
最佳答案
2018-7-20 11:05:58
在if "wlan0" in line:之前加一行print(line)看看为什么if条件不为True
3.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-7-20 10:57:01 | 显示全部楼层
你这个变量 receive 在这个方法中是第一次使用,之前并没有赋值啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-7-20 10:58:46 | 显示全部楼层
BngThea 发表于 2018-7-20 10:57
你这个变量 receive 在这个方法中是第一次使用,之前并没有赋值啊

在for循环中IF条件中给赋值 了,不知道为什么if条件老是不执行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-20 11:05:58 | 显示全部楼层    本楼为最佳答案   
在if "wlan0" in line:之前加一行print(line)看看为什么if条件不为True
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-20 11:20:06 | 显示全部楼层
akun1111 发表于 2018-7-20 10:58
在for循环中IF条件中给赋值 了,不知道为什么if条件老是不执行

if不成立呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-7-20 11:29:07 | 显示全部楼层
冬雪雪冬 发表于 2018-7-20 11:05
在if "wlan0" in line:之前加一行print(line)看看为什么if条件不为True

我在IDLE中是正常的,复制到python中给我在at /proc/'+pid+'/net/dev"') 中的pid前后多+了空格,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-7-20 11:29:47 | 显示全部楼层

嗯嗯,谢谢哈,找到问题啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-20 11:34:28 | 显示全部楼层
在 for line in traffic 前面初始化 receive
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-7-20 12:14:44 | 显示全部楼层
ba21 发表于 2018-7-20 11:34
在 for line in traffic 前面初始化 receive

报错原因是if条件不成立。pid前面多了个空格,修改后就好啦
找到问题并且解决啦,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-27 07:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表