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

資訊專欄INFORMATION COLUMN

Python實現命令行監控北京實時公交之二

fasss / 2687人閱讀

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

鏈接前文:Python實現命令行監控北京實時公交之一


開頭先放上效果展示

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

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

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

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


命令行顯示輸出及美化

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

prettytable庫和colorama

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

from prettytable import PrettyTable
from colorama import Fore, init

# colorama需要init使用
init()

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

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

"""
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引入模塊,結尾代碼如下:

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

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

從中不難發現,docopt解析了__doc__Usage的部分,將參數以字典的形式返回,我們改變輸入命令的參數,返回的args字典對應的value也將不同。


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

if __name__ == "__main__":
    args = docopt(__doc__)
    b_code = args[""]
    # 如果輸入了參數
    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)
        # 進入循環以刷新
        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循環構建傳給print_direction_and_station參數
            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,就可以顯示上文圖中的結果了,python bus.py -i也是同理,自定義一個print信息的函數即可。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/41518.html

相關文章

  • Python實現命令監控北京實時公交之一

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

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

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

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

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

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

    摘要:梁振英在星期二月日的答問大會開始之際在其演說中道歉,但強調他在違章建筑問題上沒有隱瞞的意圖和動機。 圖片處理 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
  • 斯坦福新深度學習系統 NoScope:視頻對象檢測快1000倍

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

    xcold 評論0 收藏0

發表評論

0條評論

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