學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,注意操作...