股票每日交易資訊、三大法人資料(區分期貨與選擇權二類-依日期)模組化後,也把加權指數行情用get_and_save
取資料並且匯入資料庫中吧。
本日程式碼使用:market_info.py
將會改寫:
這邊只有製作一個class「daily_market_info
」,但是其中包含從API取得資料,以及下載好的檔案取得資料。
要從網路,還是檔案取得資料的關鍵是「來源」,這邊製作了url
和path
兩個參數在get_and_save()
功能中,讓我們方便帶入使用。
當path
沒有資料,表示是使用url
的方式,也就是從網路取得資料,url
的位置可以指定,也可以使用預設值。如果path
有資料,就以這個為優先,但是沒有預設值。
所以在get_and_save()
要辨別資料是否齊全,沒有的話直接從網路來。
if url:
print("=資料從網路來(非預設)=")
r = self._get_csv_data(url)
else:
if path: # 代表是從檔案來的
print("=資料從檔案來=")
r = self._get_csv_data(path=path)
else:
print("=資料從網路來=")
r = self._get_csv_data()
最後取資料的時候,就要實作,因此要判斷到底是走網路API,還是直接解檔案:
if path is None:
if url:
self.url = url
csv = requests.get(self.url) # 從網路取得CSV檔案
df = pandas.read_csv(StringIO(csv.text)) # 有header
else:
# 從CSV檔取得資料,且編碼為big-5
df = pandas.read_csv(path, encoding="big5")
測試時,分成URL API取資料,另一個是直接給路徑
csv_data = daily_market_info()
r = csv_data.get_and_save()
if r:
print("success")
else:
print("False")
csv_data = daily_market_info()
csv_path = os.path.join(os.path.dirname(__file__), "每日市場成交資訊_202101.csv")
r = csv_data.get_and_save(path=csv_path)
if r:
print("success")
else:
print("False")
本來預計要做到訊號燈的模組化,結果還是取資料,看來只能明天把訊號燈模組化吧!