昨天使用datetime處理日期相關的過濾,
今天我們來談談如果股價已經取得的資訊Python要如何從檔案取出運用?
我們使用Python讀取檔案資訊的步驟約三個,概略說明如下:
第一個步驟:開啟檔案;使用open以讀取模式開啟檔案。
例如: open(‘123.txt’)
第二個步驟:讀取內容;使用read方法讀取檔案內容。
例如: file.read()
第三個步驟:關閉檔案;使用close()方法關閉檔案。
例如:file.close()
(一) 使用open()開啟檔案
一般來說想要來處理檔案,首先要先讓電腦知道現在我們所要處理的檔案是哪一份檔案。使用的方式如下:
f = open(檔名,模式)
上面提到的函式 open() 的部分通常包含兩個參數,「檔案名稱」以及「模式」。
檔名所要填入的是檔案路徑,指的是相對路徑,也就是「相對於你的程式執行的位置」。如果在同一個資料夾當中執行,可以直接寫檔案的名稱,例如: "test.txt" 。
而 「模式」(mode) 代表的是你開啟檔案的模式,Python 提供了數種開啟檔案的模式,包含僅供讀取、可以覆寫檔案等等。說明如下:
(二) 使用read()讀取檔案
成功開啟檔案後,接著就是將檔案當中的資料讀取進來。Python 在 file object 當中提供了數種從檔案讀取資料的方法,以下僅針對常用的介紹。
1. file.read()
第一種是 file.read() 函式,用法如下:file.read([size])
括號當中的參數 size 是 (非必填)optional 的,當我們設置了 size 的值,電腦就會自動讀到指定的字節數量,若沒有設置就會將整個檔案都讀取進來。
舉例來說,當我們今天有一個叫做 123.txt 的文字檔,內容如下:
Hello World Python!
We are family.
我們嘗試使用 file.read() 來讀取資料,有填入size與沒有填的差別如下:
content = file.read()
print(content)
#[output]
Hello World Python!
We are family.
另外填寫size的狀況
content = file.read(11)
print(content)
#[output]
Hello World
2. file.readline()
第二種常見讀取內容的方法是 file.readline() ,從字面上的意思就可看出此函式的作用;就是讀取檔案中的整行資料,但是一次只讀取一行,包含 \n 字元,如果檔案當中包含了 多 行的資料,我們就必須呼叫 file.readline() 多 次。
我們以file.readline()再一次讀取文字檔 123.txt 。
Line01 = file.readline()
Line02 = file.readline()
print(Line01, Line02)
3. file.readlines()
若想要一次讀取所有資料Pyhton也提供了readlines()的方法:file.readlines()
file.readlines() 會將檔案當中的所有資料都逐行讀取進來,然後會將其回傳成為一個 list ,我們嘗試執行以下的程式碼,將檔案使用 f.readlines() 讀取進來以後,用變數承接,然後將其列出:
file = open('123.txt')
allWord = file.readlines()
print(allWord)
f.close()
執行結果如下:
#[output]
Hello World Python!
We are family.
**(三) 使用close()關閉檔案 **
開啟檔案後,將結束對於這個檔案的存取,需要將檔案關閉。此時所使用的函式如下:file.close()
當我們要開啟其他檔案時,當然可以直接再開啟然後取代掉目前的 file object,記得使用關閉檔案的好習慣。
(四) 使用Write()寫入檔案
第一種是 f.write() ,其概念相對於剛才所介紹的 f.read() ,參數的資料型態是字串 string ,在使用上也相當容易:
舉例的程式碼如下:
file = open('123.txt', 'w')
file.write("Hello Word Python!!")
file.close()
執行以上的程式碼,將會得到一個新的檔案內容為「Hello Word Python!!」
(五) 本次運用方式說明
本次主要希望大家熟悉Python對於檔案存取常用函式的運用,
對於股價從檔案讀取,我們需要先有一個檔名為「stockInfo.txt」,
相關內容如下:
['9914,20221003,20221011']
# 以上內容後: 股票代號, 起始日期, 結束日期
主要步驟如下:
Step01: 首先會使用open開啟檔案。
Step02: 接著使用f.readlines()讀取所有檔案內容。
Step03: 使用f.close()關閉檔案
Strin04: 使用print列出讀取的內容。
Step03: 使用split()函式切割內容。
Step04: 將切割後的結果暫存到list
Step05: 使用print列出執行分割後的結果
# 切割後內容結果: ['9914', '20221003', '20221011']
(六) 本次實作
相關程式碼與說明如下:
# 使用空串列來承接讀取的資料
list = []
# 使用預設的讀取模式開啟txt檔案內容
f = open('stockInfo.txt')
# 以行為單位讀取檔案內容
fline = f.readlines()
# 關閉檔案
f.close()
# 顯示讀取到的內容
print('檔案內容是:', fline)
# 使用split()函式切割內容
a, b, c = fline[0].split(',')
# 將切割後的結果暫存到list
list = [a, b, c]
# 輸出回傳結果
print('切割後內容是:',list)
# [output]
檔案內容是: ['9914,20221003,20221011']
切割後內容是: ['9914', '20221003', '20221011']