前言
我們在編寫一些自動化腳本的時候,爲了方便,經常需要以txt 文件作爲數據輸入,今天就跟大家討論一下如何對txt 文件進行讀取並生成對應的列表等程序可操作的數據載體。
開始
1. 載入文件
這步就大家比較熟悉,文件操作中最基本的了。
因爲我們只需要讀取文件,並不需要寫入文件,所以在這裏指定mode="r"
爲只讀模式(默認)。
f = open("C:/foo.txt", "r",encoding='utf-8')
此時就有了這個txt 文件的數據輸入流了。
2. 讀取數據流
讀取數據的方法主要有三個,分別是read()
、readline()
、readlines()
方法 | 作用 |
---|---|
read() | 從文件讀取指定的字節數,如果未給定或爲負則讀取所有。 |
readline() | 讀取整行,包括 “\n” 字符。 |
readlines() | 讀取所有行並返回列表,若給定sizeint>0,返回總和大約爲sizeint字節的行, 實際讀取值可能比 sizeint 較大, 因爲需要填充緩衝區。 |
接下來簡單展示一下這三種方法的區別:
這是foo.txt
中的內容
("祖安", 1000)
("諾克薩斯", 900)
("艾歐尼亞", 880)
("暗影島", 750)
("征服之海", 620)
("黑色玫瑰", 600)
("德瑪西亞", 500)
("裁決之地", 440)
("聖安地列斯", 400)
("自由城", 350)
("供電所", 300)
("影流", 200)
("荊棘坎坷", 180)
("永不言棄", 100)
- read()
和txt 數據格式一致,返回str 類型數據
- readline()
只讀取一行(包括換行),返回str 類型數據
- readlines()
全部讀取,返回list 類型數據
3. 數據處理
根據上一步,我們可以得到多種形式的數據類型,從而根據我們的需求進行多種處理。
大家可以看到,我的foo.txt
中的數據是滿足元組形式的,那我就試着將foo.txt
文件中的字符串類型數據轉變成元組吧:
line = f.readline() # 讀取一行
tu = eval(line) # 轉爲元組形式
print(tu)
print(type(tu))
輸出:
若需要全部數據都逐行轉變爲元組,然後整體串成一個列表:
txt_tables = []
f = open("C:/foo.txt", "r",encoding='utf-8')
line = f.readline() # 讀取第一行
while line:
txt_data = eval(line) # 可將字符串變爲元組
txt_tables.append(txt_data) # 列表增加
line = f.readline() # 讀取下一行
print(txt_tables)
之所以while 循環中的
f.readline()
能夠不斷讀取下一行,是因爲當我們每次執行完一次該語句之後,文件輸入流的指針都會移動到下一行的起始位,所以每次再次執行,都是從下一行的第一個字符開始讀取。
輸出:
4. 關閉文件
是的,不要忘了關閉文件流:
f.close()