Python-文件和數據格式化
文件的使用
>文件的類型
文件的理解:文件是數據的抽象和集合
-文件時存儲在輔助存儲器上的數據序列
-文件是數據存儲的一種形式
-文件展現形態:文本文件和二進制文件
文本文件vs.二進制文件
-文本文件和二進制文件只是文件的展示方式
-本質上,所有文件都是二進制形式存儲
-形式上,所有文件采用兩種方式展示
文本文件
-由單一特定編碼組成的文件,如UTF-8編碼
-由於存在編碼,也被看成是存儲著長字符串
-適用於例如:.txt文件、.py文件等
二進制文件
-直接由比特0和1的組織,沒有統一字符編碼
-一般存在二進制0和1的組織結構,即文件格式
-適用於例如:.png文件、.avi文件等
-文本形式:中國是個偉大的國家!
-二進制形式:b‘\xd6\xd0\xb9\xfa\xca\xc7\xb8\xf6\xce\xb0\xb4\xf3\xb5\ xc4\xb9\xfa\xbc\xd2\xa3\xa1‘
f.txt文件保存: "中國是個偉大的國家!"
#文本形式打開文件 tf = open("f.txt", "rt") print(tf.readline()) tf.close() #中國是個偉大的國家!
#二進制形式打開文件 bf = open("f.txt", "rb") print(bf.readline()) bf.close() #b‘\xd6\xd0\xb9\xfa\xca\xc7\xb8\xf6\xce\xb0 \xb4\xf3\xb5\xc4\xb9\xfa\xbc\xd2\xa3\xa1‘
>文件的打開和關閉
文件處理的步驟:打開-操作-關閉
文件的關閉
<變量名>.close
>文件內容的讀取
>數據文件寫入
fo = open("output.txt","w+") ls = ["中國", "法國", "美國"] fo.writelines(ls) for line in fo: print(line) fo.close()
#沒有任何輸出
fo = open("output.txt","w+") ls = ["中國", "法國", "美國"] fo.writelines(ls) fo.seek(0) for line in fo: print(line) fo.close()
#中國法國美國
一維數據的格式化和處理
>數據組織的維度
一維數據:由對等關系的有序或無序,采用線性方式組織
二維數據:由多個一維數據構成,是一維數據的組合形式
>一維數據的表示
如果數據間有序:使用列表類型
-for循環可以遍歷數據,進而對每個數據進行處理
如果數據間無序:使用集合類型
-for。。。
>一維數據的存儲
存儲方式一: 空格分隔
中國 美國 日本 德國 法國 英國 意大利
-使用一個或多個空格分隔進行存儲,不換行
-缺點:數據中不能存空格
存儲方式二:逗號分隔
中國,美國,日本,德國,法國,英國,意大利
-使用英文半角逗號分割數據進行存儲,不換行
-缺點:數據中不能有英文逗號
存儲方式三:其他方式
中國$美國$日本$德國$法國$英國$意大利
-使用其他符號或符號組合隔離,建議采用特殊符號
-缺點:需要根據數據特點定義,通用性差
>一維數據的處理
txt=open(fname).read() ls=txt.split() f.close ls #[‘中國‘, ‘美國‘, ‘日本‘, ‘德國 ‘, ‘法國‘, ‘英國‘, ‘意大利‘]
txt=open(fname).read() ls=txt.split("$") f.close ls #[‘中國‘, ‘美國‘, ‘日本‘, ‘德國 ‘, ‘法國‘, ‘英國‘, ‘意大利‘]
采用空格分隔方式將數據寫入文件
ls = [‘中國‘, ‘美國‘, ‘日本‘] f = open(fname, ‘w‘) f.write(‘ ‘.join(ls)) f.close()
采用特殊分隔方式將數據寫入文件
ls = [‘中國‘, ‘美國‘, ‘日本‘] f = open(fname, ‘w‘) f.write(‘$‘.join(ls)) f.close()
二維數據的格式化和處理
>二維數據的表示
>CSV數據存儲格式
CSV: Comma-Separated Values
-國際通用的一二維數據存儲格式,一般.csv擴展名
-每行一個一維數據,采用逗號分隔,無空行
-Excel和一般編譯軟件都可以讀入或另存為CSV文件
-如果某個元素缺失,逗號仍要保留
-二維數據的表頭可以作為數據存儲,也可以另行存儲
-逗號為英文半角逗號,逗號與數據之間無額外空格
>二維數據的存儲
>二維數據的處理
二維數據的讀入處理
從CSV格式文件中讀入數據
fo =open(fname) ls=[] for line in fo: line = line.replace("\n","") ls.append(line.split(",")) fo.close()
二維數據的寫入處理
將數據寫入CSV格式文件
ls=[[],[],[]] #二維列表 f=open(fname,‘w‘) for item in ls: f.write(‘,‘.join(item)+‘\n‘) f.close
二位數據的逐一處理
采用二層循環
ls=[[],[],[]] #二維列表 for row in ls: for column in row: print(ls[row][colum])
部分圖片來自慕課https://www.icourse163.org/course/BIT-268001 若侵權請告知刪除
Python-文件和數據格式化