国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Python實現(xiàn)命令行監(jiān)控北京實時公交之二

fasss / 2682人閱讀

摘要:鏈接前文實現(xiàn)命令行監(jiān)控北京實時公交之一開頭先放上效果展示在命令行輸入,顯示基本信息,如下在命令行輸入,顯示北京路公交車的位置,如下紅色的說明在梅園附近有一輛公交車,并且會不斷刷新。

鏈接前文:Python實現(xiàn)命令行監(jiān)控北京實時公交之一


開頭先放上效果展示

在命令行輸入 python bus.py -i,顯示app基本信息,如下:

在命令行輸入 python bus.py 438,顯示北京438路公交車的位置,如下:

紅色的B說明在梅園附近有一輛438公交車,并且會不斷刷新。

GitHub地址 - https://github.com/Harpsichor...


命令行顯示輸出及美化

前文我們實現(xiàn)了獲取公交車位置的函數(shù),現(xiàn)在需要將其美化并輸出到命令行中,這里分別使用docopt/prettytable/colorama三個庫。

prettytable庫和colorama

簡單來說,prettytable可以將數(shù)據(jù)以表格的形式打印,colorama可以設(shè)置命令行中字體的顏色,直接上代碼:

from prettytable import PrettyTable
from colorama import Fore, init

# colorama需要init使用
init()

# 函數(shù)接受4個參數(shù)
# data0/data1分別是往返站點信息的list,其中的元素也是list,結(jié)構(gòu)是["id", 站名, 是否有公交車]
# time0/time1是往返線路運營時間
def print_direction_and_station(data0, data1, time0, time1):
    pt = PrettyTable()
    # 設(shè)置表頭,為了美觀往返之間留一個空列
    pt.field_names = ["#0", "UP:" + time0, "Bus0", "   ", "#1", "DOWN:" + time1, "Bus1"]
    # 往返路線的站數(shù)可能不一致,取最大值作為行
    for i in range(max(len(data0), len(data1))):
        if i >= len(data0):
            r0 = [" "] * 3
        else:
            r0 = data0[i]
            # "B"表示該車站附近有公交車
            if r0[2] == "B":
                # 設(shè)置文本的顏色為紅色
                r0[1] = Fore.RED + r0[1]
                # 去除紅色,否則后面全是紅的
                r0[2] = r0[2] + Fore.RESET
        if i >= len(data1):
            r1 = [" "] * 3
        else:
            r1 = data1[i]
            if r1[2] == "B":
                r1[1] = Fore.RED + r1[1]
                r1[2] = r1[2] + Fore.RESET
        pt.add_row(r0 + ["   "] + r1)
    # 打印結(jié)果
    print(pt)
docopt

docopt可以讀取一段字符串(通常是__doc__),并將其解析為命令行參數(shù),例如在bus.py開頭輸入以下內(nèi)容:

"""
Usage:
    bus 
    bus [-ih]

Options:
    -h              Show help information
    -i              Show application information

Example:
    bus 438         Show stations, directions and positions of bus 438
"""

并使用from docopt import docopt引入模塊,結(jié)尾代碼如下:

if __name__ == "__main__":
    args = docopt(__doc__)
    print(args)

直接使用python bus.py運行,輸出的結(jié)果是:

從中不難發(fā)現(xiàn),docopt解析了__doc__Usage的部分,將參數(shù)以字典的形式返回,我們改變輸入命令的參數(shù),返回的args字典對應(yīng)的value也將不同。


前文中我們獲取的公交車位置信息需要經(jīng)過一些處理才能傳給print_direction_and_station函數(shù),結(jié)合命令行參數(shù),代碼如下:

if __name__ == "__main__":
    args = docopt(__doc__)
    b_code = args[""]
    # 如果輸入了參數(shù)
    if b_code:
        # 獲取往返線路id
        [d0, _], [d1, _] = get_bus_direction(b_code)
        # 獲取往返車站
        stations0 = get_bus_stations(b_code, d0)
        stations1 = get_bus_stations(b_code, d1)
        # 進(jìn)入循環(huán)以刷新
        while 1:
            direction0 = []
            direction1 = []
            status0 = get_bus_status(b_code, d0, len(d0))
            status1 = get_bus_status(b_code, d1, len(d1))
            pos0 = status0["bus_position"]
            # pos0_id/pos1_id 是有公交車的車站id
            pos0_id = [p["station_id"] for p in pos0]
            pos1 = status1["bus_position"]
            pos1_id = [p["station_id"] for p in pos1]
            # 兩個for循環(huán)構(gòu)建傳給print_direction_and_station參數(shù)
            for i, d in enumerate(stations0):
                bus = " "
                if str(i+1) in pos0_id:
                    bus = "B"
                direction0.append([i+1, d, bus])
            for i, d in enumerate(stations1):
                bus = " "
                if str(i + 1) in pos1_id:
                    bus = "B"
                direction1.append([i+1, d, bus])
            print_direction_and_station(direction0, direction1, status0["operation_time"], status1["operation_time"])
            # 每5s刷新一次
            sleep(5)

此時輸入python bus.py 438,就可以顯示上文圖中的結(jié)果了,python bus.py -i也是同理,自定義一個print信息的函數(shù)即可。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/41518.html

相關(guān)文章

  • Python實現(xiàn)命令監(jiān)控北京實時公交之一

    摘要:開頭先放上效果展示在命令行輸入,顯示基本信息,如下在命令行輸入,顯示北京路公交車的位置,如下紅色的說明在梅園附近有一輛公交車,并且會不斷刷新。 開頭先放上效果展示 在命令行輸入 python bus.py -i,顯示app基本信息,如下: showImg(https://segmentfault.com/img/bV8gmb?w=644&h=454); 在命令行輸入 python bu...

    vboy1010 評論0 收藏0
  • 高德地圖 Javascript API 入門(六)

    摘要:高德地圖入門六出行規(guī)劃公交路徑公交換乘服務(wù),提供起終點公交路線規(guī)劃服務(wù),整合步行方式初始化加載公交線路插件實例化北京必須值,搭乘公交所在城市可選值,搜索結(jié)果的標(biāo)注線路等均會自動添加到此地圖上可選值,顯示搜索列表的容器可選值,詳細(xì)信息駕駛策略 高德地圖 Javascript API 入門(六) 出行規(guī)劃 公交路徑 公交換乘服務(wù),提供起、終點公交路線規(guī)劃服務(wù),整合步行方式 初始化 // 加...

    idisfkj 評論0 收藏0
  • 提高 JavaScript 開發(fā)效率的高級 VSCode 擴展之二

    摘要:將這些命令綁定到鍵盤快捷鍵是有幫助的,例如向上箭頭用于平衡向外,而向下箭頭用于平衡向內(nèi)。是和的快速原型開發(fā)平臺。 本系列的第一篇可以在這里看到: 提高 JavaScript 開發(fā)效率的高級 VSCode 擴展! showImg(https://segmentfault.com/img/bVbnn2j?w=1254&h=768); 想閱讀更多優(yōu)質(zhì)文章請猛戳GitHub博客,一年百來篇優(yōu)質(zhì)...

    cyrils 評論0 收藏0
  • 那些有趣/用的 Python

    摘要:梁振英在星期二月日的答問大會開始之際在其演說中道歉,但強調(diào)他在違章建筑問題上沒有隱瞞的意圖和動機。 圖片處理 pip install pillow from PIL import Image import numpy as np a = np.array(Image.open(test.jpg)) b = [255,255,255] - a im = Image.fromarray(...

    Pikachu 評論0 收藏0
  • 斯坦福新深度學(xué)習(xí)系統(tǒng) NoScope:視頻對象檢測快1000倍

    摘要:通過利用一系列利用視頻局部性的優(yōu)化,顯著降低了在每個幀上的計算量,同時仍保持常規(guī)檢索的高精度。的差異檢測器目前是使用逐幀計算的邏輯回歸模型實現(xiàn)的。這些檢測器在上的運行速度非常快,每秒超過萬幀。也就是說,每秒處理的視頻幀數(shù)超過幀。 視頻數(shù)據(jù)正在爆炸性地增長——僅英國就有超過400萬個CCTV監(jiān)控攝像頭,用戶每分鐘上傳到 YouTube 上的視頻超過300小時。深度學(xué)習(xí)的進(jìn)展已經(jīng)能夠自動分析這些...

    xcold 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<