Python文件讀寫及網站顯示
一、關於文件讀寫的筆記
(一) 文件概述
文件是一個存儲在輔助存儲器上的數據序列,可以包含任何數據內容
文件都是按照2進制進行存儲的,但在表現形式上有2種:文本文件和二進制文件。
1. 文本文件
文本文件一般由單一特定編碼的字符組成,如utf-8編碼,內容容易統一展示和閱讀,大部分文本文件都可以通過文本編輯軟件和文字處理軟件創建、修改和閱讀,最常見的是txt格式的文本文件。
文本文件采用文本方式打開時,文件通過編碼形成字符串;采用二進制方式打開時,文件被解析成字節流。由於存在編碼,字符串中的一個字符由兩個字節表示。
2. 二進制文件
二進制文件直接由比特0和比特1組成,沒有統一字符編碼。二進制文件其實也是常見的,如png格式的圖片文件、avi格式的視頻文件等等。
(二) 文件的使用
文件的使用分為3步:打開文件、讀寫文件、關閉文件。
1. 打開文件
變量名 = open (文件名, 打開模式)
打開模式 |
說明 |
r |
只讀模式 (默認),文件不存在則返回FileNotFoundError異常 |
w |
覆蓋寫模式,文件不存在則創建,存在則覆蓋寫 |
x |
創建寫模式,文件不存在則創建,存在則返回FileExistsError異常 |
a |
追加寫模式,文件不存在則創建,存在則追加寫 |
t |
文本文件模式 |
b |
二進制文件模式 |
+ |
在原功能基礎上增加讀寫功能 |
2. 讀文件
讀文件方法 |
說明 |
<file>.read(size=-1) |
從文件中讀入所有內容,若有參數,則讀入前size長度的字符串或字節流 |
<file>.readline(size=-1) |
從文件中讀入一行內容,若有參數,則讀入改行前size長度的字符串或字節流 |
<file>.readlines(hint=-1) |
從文件中讀入所有行,以每行為元素形成列表,若有參數,則讀入hint行 |
3. 寫文件
寫文件方法 |
說明 |
<file>.write(s) |
向文件中寫入一個字符串或字節流 |
<file>.writelines(lines) |
將一個全為字符串的列表寫入文件 |
<file>.seek(offset) |
改變當前文件操作指針的位置(offset值) |
4. 關閉文件
變量名.close()
(三) 使用實例
1 f = open("Avengers.txt", ‘r‘) # 打開文件,只讀模式 2 for line in f.readlines(): # 輸出文件內容 3 print(line) 4 ‘The truth is ...... I am Iron man.‘ 5 f.close() # 關閉文件 6 fp = open("Avengers.txt", ‘w+‘) # 打開文件,讀寫模式 7 text = "I love you three thousand times." 8 fp.write(text) # 將字符串text寫入文件 9 fp.seek(0) # 將文件指針移至文件開頭 10 fp.read() # 讀入文件所有內容 11 ‘I love you three thousand times.‘ 12 f.close() # 關閉文件
二、將Excel文件存為cvs格式
CSV格式(Comma-Separated Values,逗號分隔值)是一種通用的,相對簡單的文件格式,可應用在程序之間轉移表格數據。下面我將展示,如何使用Python將Excel文件存為cvs格式。
1 import pandas as pd 2 data_xls = pd.read_excel(‘Python成績.xlsx‘, ‘Sheet1‘, index_col = 0) 3 data_xls.to_csv(‘Python成績(修).csv‘, encoding=‘utf-16‘)
修改前
修改後
下面再把各評價轉為分數,優秀--->90,良好--->80,及格--->60,空白(不合格)--->0。
代碼如下
1 import pandas as pd 2 3 def ExcelToCsv(StartName, SheetName, EndName): 4 ‘‘‘ 5 函數功能: 將excel格式文件轉換為csv格式文件,使用iat方法 6 StartName: excel表格的文件路徑 7 SheetNmae: excel表格中的表格名稱 8 EndName: csv文件的保存路徑 9 ‘‘‘ 10 grade = pd.read_excel(StartName, sheet_name=SheetName) 11 for i in range(len(grade.index)): 12 for j in range(1, len(grade.columns)): 13 if grade.iloc[i, j] == ‘優秀‘: 14 grade.iat[i, j] = 90 15 elif grade.iloc[i, j] == ‘良好‘: 16 grade.iat[i, j] = 80 17 elif grade.iloc[i, j] == ‘合格‘: 18 grade.iat[i, j] = 60 19 else: 20 grade.iat[i, j] = 0 21 grade.to_csv(EndName, encoding=‘utf-8‘) 22 23 ExcelToCsv("Python成績.xlsx", "Sheet1", "Python(修).csv")
效果如下
三、將csv文件存為html格式
HTML (Hyper Text Markup Language,超文本標記語言) 是一種用於創建網頁的標準標記語言。HTML是一種基礎技術,常與CSS、JavaScript一起被眾多網站用於設計網頁、網頁應用程序以及移動應用程序的用戶界面。網頁瀏覽器可以讀取HTML文件,並將其渲染成可視化網頁。HTML描述了一個網站的結構語義隨著線索的呈現,使之成為一種標記語言而非編程語言。
1 import pandas as pd 2 3 def csv_to_xlsx_pd(): 4 csv = pd.read_csv(‘Python(修).csv‘) 5 csv.to_excel(‘1.xlsx‘, sheet_name=‘data‘) 6 7 8 if __name__ == ‘__main__‘: 9 csv_to_xlsx_pd()
效果如下
四、運用CGI將csv文件用網頁顯示
CGI(Common Gateway Interface)也叫通用網關接口,它是一個web服務器主機提供信息服務的標準接口,只要遵循這個接口,web服務器就能獲取客戶端提交的信息,轉交給服務端的CGI程序進行處理,然後將處理結果返回給客戶端。CGI通訊是由兩部分組成的:一部分是用戶的瀏覽器顯示的頁面,也就是html頁面,另一部分則是運行在服務器上的CGI程序。
下面我將csv文件中的內容通過代碼得到網頁源代碼
代碼如下
1 def fill_data(excel, length=4): 2 ‘‘‘ 3 函數功能:填充表格的一行數據,返回html格式的字符串text 4 excel: 表格中的一行數據 5 length: 表格中需要填充的數據個數(即列數),默認為4個 6 由於生成csv文件時自動增加了1列數據,因此在format()函數從1開始 7 ‘‘‘ 8 text = ‘<tr>‘ 9 for i in range(length): 10 tmp = ‘<td align="center">{}</td>‘.format(excel[i+1]) 11 text += tmp 12 text += "</tr>\n" 13 return text 14 15 def GetCsv(csvFile): 16 ‘‘‘ 17 函數功能:打開csv文件並獲取數據,返回文件數據 18 csvFile: csv文件的路徑和名稱 19 ‘‘‘ 20 ls = [] 21 csv = open(csvFile, ‘r‘) 22 for line in csv: 23 line = line.replace(‘\n‘, ‘‘) 24 ls.append(line.split(‘,‘)) 25 return ls 26 27 28 def CsvToHtml(csvFile, thNum): 29 ‘‘‘ 30 csvFile: 需要打開和讀取數據的csv文件路徑 31 HTMLFILE: 保存的html文件路徑 32 thNum: csv文件的列數,需註意其中是否包括csv文件第1列無意義的數據, 33 此處包含因此在調用時需要增加1 34 ‘‘‘ 35 csv_list = GetCsv(csvFile) # 獲得csv文件數據 36 37 print("Content-type:text/html\r\n\r\n") 38 print(‘‘‘ 39 <!DOCTYPE HTML>\n<html>\n<body>\n<meta charset=gbk2313> 40 <h1 align=center>Python成績表</h2> 41 <table border=‘blue‘>\n‘‘‘) # 寫html文件首部 42 for i in range(1, thNum+1): # 寫表格的表頭(即第1行) 43 print(‘<th width="20%">{}</th>‘.format(csv_list[0][i])) 44 print("</tr>\n") 45 for i in range(1, len(csv_list)): # 寫表格的數據,從第2行開始為數據 46 print(fill_data(csv_list[i], 5)) 47 print("</table>\n</body>\n</html>") # 寫html文件尾部 48 49 CsvToHtml("Python(修).csv", 5)
隨後將得到的源代碼復制出來,新建一個文本文檔,並將源代碼粘貼到新建文本文檔
點擊左上角的‘文件’,再點擊‘另存為’
保存類型換為‘所有文件’,並在文件名處給其添加後綴名‘html’
並打開此html文件
Python文件讀寫及網站顯示