摘要:鏈接前文實現(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: busbus [-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
摘要:開頭先放上效果展示在命令行輸入,顯示基本信息,如下在命令行輸入,顯示北京路公交車的位置,如下紅色的說明在梅園附近有一輛公交車,并且會不斷刷新。 開頭先放上效果展示 在命令行輸入 python bus.py -i,顯示app基本信息,如下: showImg(https://segmentfault.com/img/bV8gmb?w=644&h=454); 在命令行輸入 python bu...
摘要:高德地圖入門六出行規(guī)劃公交路徑公交換乘服務(wù),提供起終點公交路線規(guī)劃服務(wù),整合步行方式初始化加載公交線路插件實例化北京必須值,搭乘公交所在城市可選值,搜索結(jié)果的標(biāo)注線路等均會自動添加到此地圖上可選值,顯示搜索列表的容器可選值,詳細(xì)信息駕駛策略 高德地圖 Javascript API 入門(六) 出行規(guī)劃 公交路徑 公交換乘服務(wù),提供起、終點公交路線規(guī)劃服務(wù),整合步行方式 初始化 // 加...
摘要:將這些命令綁定到鍵盤快捷鍵是有幫助的,例如向上箭頭用于平衡向外,而向下箭頭用于平衡向內(nèi)。是和的快速原型開發(fā)平臺。 本系列的第一篇可以在這里看到: 提高 JavaScript 開發(fā)效率的高級 VSCode 擴展! showImg(https://segmentfault.com/img/bVbnn2j?w=1254&h=768); 想閱讀更多優(yōu)質(zhì)文章請猛戳GitHub博客,一年百來篇優(yōu)質(zhì)...
摘要:梁振英在星期二月日的答問大會開始之際在其演說中道歉,但強調(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(...
摘要:通過利用一系列利用視頻局部性的優(yōu)化,顯著降低了在每個幀上的計算量,同時仍保持常規(guī)檢索的高精度。的差異檢測器目前是使用逐幀計算的邏輯回歸模型實現(xiàn)的。這些檢測器在上的運行速度非常快,每秒超過萬幀。也就是說,每秒處理的視頻幀數(shù)超過幀。 視頻數(shù)據(jù)正在爆炸性地增長——僅英國就有超過400萬個CCTV監(jiān)控攝像頭,用戶每分鐘上傳到 YouTube 上的視頻超過300小時。深度學(xué)習(xí)的進(jìn)展已經(jīng)能夠自動分析這些...
閱讀 2608·2021-11-15 11:38
閱讀 2623·2021-11-04 16:13
閱讀 18052·2021-09-22 15:07
閱讀 1023·2019-08-30 15:55
閱讀 3269·2019-08-30 14:15
閱讀 1670·2019-08-29 13:59
閱讀 3222·2019-08-28 18:28
閱讀 1580·2019-08-23 18:29