python每日一練之讀取檔案到字典

2021-10-24 14:52:38 字數 1495 閱讀 3567

學python最重要的是練習,學了不練假把式。每天找點有意思的練習題做做,強化python技能很有裨益。

需求:現有list.txt檔案存放了商品銷售資料,需要讀取該檔案到字典列表。

​ 檔案內容:

​ 商品,單價,數量

​ 蘋果,4.8,5

​ 雪梨,2.9,10

​ 大棗,5.8,6

​ 預期結果是:

​ [,

​ ,​ ]

with open('a.txt', encoding='utf8') as f:

name = f.readline().strip().split(',') # 讀取檔案第一行轉成list,作為字典的key

fruit_list =

for line in f: # 用for迴圈遍歷控制代碼f,優點是無**件有多大,讀取都不會撐爆記憶體。

# 不要用read()或readlines(),萬一處理的檔案超大會導致撐爆記憶體。

if len(line) < 3: # 過濾空行及資料不完整的行。

continue

line = line.strip().split(',') # 將檔案內容按','分隔轉成列表

fruit_dict = {} # 宣告一空字典,儲存每一行的內容

for i in range(len(name)): # 通過下標遍歷name列表

fruit_dict[name[i]] = line[i]

print(fruit_list)

寫完感覺不完美,最好是封裝成函式,利於**復用。

最終版本是:

def file_to_list(file):

'''@param file: 引數是檔名,檔案格式是以','分隔的txt檔案。

@return: 返回乙個列表,列表元素是字典,內容源自file檔案。

'''with open(file, encoding='utf8') as f:

name = f.readline().strip().split(',') # 讀取檔案第一行作為字典的key

fruit_list =

for line in f:

if len(line) < 3: # 過濾空行及資料不完整的行。

continue

line = line.split(',')

fruit_dict = {}

for i in range(len(name)): # 遍歷name列表,將每行對應內容做成字典

fruit_dict[name[i]] = line[i].strip()

return fruit_list

至此,讀取檔案到字典練習完畢。

總結:一是在開始學python時就要養成好習慣,將功能模組化,提高**復用率和可讀性。

二是定義方法要寫文件注釋,方法引數和返回值要解釋清楚。

三是**注釋不用每行都寫,重點是講清楚**邏輯。

python每日一練

人生苦短,我用python 2018.6.5 有個目錄,裡面是你自己寫過的程式,統計一下你寫過多少行 包括空行和注釋,但是要分別列出來 coding utf 8 import re import glob defcodecolletion path filelist glob.glob path p...

Python每日一練

人生苦短,我用python 2018.6.13 最近事情有點多,有幾天沒寫了,正好最近需要統計一下各組排名,也就拿python代替手工了 各組給出其他組的排名,統計每個組最終的得分,第一名為0.5,第二名0.4,以此類推。coding utf 8 groups 3,2,5,4,6 1,3,5,6,4...

python每日一練之讀寫txt檔案

讀寫檔案就是請求作業系統開啟乙個檔案物件,然後通過系統提供的介面讀寫資料。f open file,mode r buffering 1,encoding none,errors none,newline none,closefd true,opener none 上述 獲取了乙個檔案物件f,注意操作...