如何发出一次GObject信号?

时间:2017-03-16 20:20:40

标签: python python-2.7 pyudev

首先,我有不到一年的Python经验。我通常遇到有关ISP使用数据的问题,以至于我发现我过度使用了数据分配。所以,为了避免这个问题,我想到了创建一个可以立即运行的脚本我将手机连接到我的电脑上。该脚本从ISP的网站上删除数据并返回我的数据包余额。

我发现pyudev在我希望不断监视我的USB端口活动的情况下非常有用。部分脚本如下所示。问题是identify_phone被称为3次(根据我的经验),它倾向于称为刮擦方法3次,而我希望它被称为一次。我尝试使用全局值但它没有按预期工作。我在网上搜索过,但pyudev上有很少的资源。

任何帮助将不胜感激(包括我的代码的任何修订:P)

import glib
import re
import subprocess
import requests
import bs4
import datetime
import sys
from selenium import webdriver

from pyudev import Context, Monitor

def identify_phone(observer, device):
    global last_updated
    current_time = datetime.datetime.now()
    time_diff = current_time - last_updated

    if time_diff.seconds < 10:#300:
        pass
    else:
        #print('\Checking USB ports...')
        try:
            tout = subprocess.check_output("lsusb | grep 1234:1234", shell=True) #check if specific usb device (phone) is connected
        except subprocess.CalledProcessError:
            tout = None
        if tout is not None: 
            device_found = True
        else:
            device_found = False
        last_updated = datetime.datetime.now()

        get_network_data()# scrapes ISP website

try:
    device_found = False
    last_updated = datetime.datetime.now()
    try:
        from pyudev.glib import MonitorObserver

    except ImportError:
        from pyudev.glib import GUDevMonitorObserver as MonitorObserver

    context = Context()
    monitor = Monitor.from_netlink(context)

    monitor.filter_by(subsystem='usb')
    observer = MonitorObserver(monitor)

    observer.connect('device-added', identify_phone)
    monitor.start()

    glib.MainLoop().run()

except KeyboardInterrupt:
    print('\nShutdown requested.\nExiting gracefully...')
    sys.exit(0)

0 个答案:

没有答案