文件操做

文件操做html

1、關於文件讀寫的筆記python

(一) 文件概述web

文件是一個存儲在輔助存儲器上的數據序列,能夠包含任何數據內容編程

文件都是按照2進制進行存儲的,但在表現形式上有2種:文本文件和二進制文件。瀏覽器

1. 文本文件服務器

  文本文件通常單一特定編碼的字符組成,如utf-8編碼內容容易統一展現和閱讀,大部分文本文件均可以經過文本編輯軟件和文字處理軟件建立修改和閱讀,最多見的是txt格式的文本文件。app

  文本文件採用文本方式打開時,文件經過編碼造成字符串;採用二進制方式打開,文件被解析成字節流因爲存在編碼,字符串中的一個字符由兩個字節表示編程語言

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值)
0:文件開頭;1:當前位置;2:文件結尾

4. 關閉文件

變量名.close()

 (三) 使用實例

>>> f = open("D:\\joke.txt", 'r')      # 打開文件,只讀模式
>>> for line in f.readlines():         # 輸出文件內容
    print(line)

    
交警站在紅綠燈路口把一輛小汽車攔住。

交警說:「你還不停車,車輪壓線了。」

司機說:「這是個人壓軸好戲。」

交警說:「我看你沒有拿出剎手鐗。」

司機說:「我把握得好,沒有把線壓壞吧?」

交警說:「這是一根高壓線,不容你觸及。」

司機說:「不要緊,個人車輪是絕緣體。」
>>> f.close()                     # 關閉文件
>>> fp = open("D:\\joke.txt",  'w+')      # 打開文件,讀寫模式
>>> text = "我買了王羲之的親筆寫的大字:同一個世界同一個夢想。"
>>> fp.write(text)                        # 將字符串text寫入文件
25
>>> fp.seek(0)                            # 將文件指針移至文件開頭
0
>>> fp.read()                             # 讀入文件全部內容
'我買了王羲之的親筆寫的大字:同一個世界同一個夢想。'
>>> f.close()                             # 關閉文件

 

2、將excel文件存爲csv文件

  CSV格式(Comma-Separated Values,逗號分隔值)是一種通用的,相對簡單的文件格式,可應用在程序之間轉移表格數據。由此看來,csv格式文件的應用仍是很廣大的。

因此,看看怎麼轉化吧 ~~~

此處的轉換方式爲: 優秀 --> 90,良好 --> 80, (不)合格 --> 60,NaN --> 0

 1 # -*- coding:utf-8
 2 '''
 3 This is a programe that can change excel into csv.
 4 @author:步平凡
 5 '''
 6 import pandas as pd
 7 
 8 def ExcelToCsv_1(StartName, SheetName, EndName):
 9     '''
10     函數功能: 將excel格式文件轉換爲csv格式文件,使用iat方法
11     StartName: excel表格的文件路徑
12     SheetNmae: excel表格中的表格名稱
13     EndName:   csv文件的保存路徑
14     '''
15     grade = pd.read_excel(StartName, sheet_name=SheetName)
16     for i in range(len(grade.index)):
17         for j in range(1, len(grade.columns)):
18             if grade.iloc[i, j] == '優秀':
19                 grade.iat[i, j] = 90
20             elif grade.iloc[i, j] == '良好':
21                 grade.iat[i, j] = 80
22             elif grade.iloc[i, j] == '合格':
23                 grade.iat[i, j] = 60
24             else:
25                 grade.iat[i, j] = 0
26     grade.to_csv(EndName)
27 
28 
29 def ExcelToCsv_2(StartName, SheetName, EndName):
30     '''
31     函數功能: 將excel格式文件轉換爲csv格式文件,使用replace方法
32     StartName: excel表格的文件路徑
33     SheetNmae: excel表格中的表格名稱
34     EndName:   csv文件的保存路徑
35     '''
36     grade = pd.read_excel(StartName, sheet_name=SheetName)
37     Grade = grade.replace("優秀", "90")
38     Grade = Grade.replace("良好", "80")
39     Grade = Grade.replace("不合格", "60")
40     Grade = Grade.replace("合格", "60")
41     Grade = Grade.fillna(value = 0)
42     Grade.to_csv(EndName)
43 
44 ExcelToCsv_2("D:\\Python_1.xlsx", "Sheet1", "D:\\Python_1.csv")
45 ExcelToCsv_1("D:\\Python_2.xlsx", "Sheet1", "D:\\Python_2.csv")

看看轉化效果吧:

 

 3、將csv文件存爲html文件

  HTML (Hyper Text Markup Language,超文本標記語言) 是一種用於建立網頁的標準標記語言。HTML是一種基礎技術,常與CSSJavaScript一塊兒被衆多網站用於設計網頁、網頁應用程序以及移動應用程序的用戶界面。網頁瀏覽器能夠讀取HTML文件,並將其渲染成可視化網頁。HTML描述了一個網站的結構語義隨着線索的呈現,使之成爲一種標記語言而非編程語言。

  瞭解了html,看看python怎麼作這二者的橋樑吧 ^v^

 1 # -*- coding:utf-8
 2 '''
 3 This is a programe that can change csv into html.
 4 @author:步平凡
 5 '''
 6 
 7 def fill_data(excel, length=4):
 8     '''
 9     函數功能:填充表格的一行數據,返回html格式的字符串text
10     excel: 表格中的一行數據
11     length: 表格中須要填充的數據個數(即列數),默認爲4個
12     因爲生成csv文件時自動增長了1列數據,所以在format()函數從1開始
13     '''
14     text = '<tr>'
15     for i in range(length):
16         tmp = '<td align="center">{}</td>'.format(excel[i+1])
17         text += tmp
18     text += "</tr>\n"
19     return text
20 
21 def GetCsv(csvFile):
22     '''
23     函數功能:打開csv文件並獲取數據,返回文件數據
24     csvFile: csv文件的路徑和名稱
25     '''
26     ls = []
27     csv = open(csvFile, 'r', encoding="utf-8")
28     for line in csv:
29         line = line.replace('\n', '')
30         ls.append(line.split(','))
31     return ls
32 
33 
34 def CsvToHtml(csvFile, HTMLFILE, thNum):
35     '''
36     函數功能:將csv格式文件轉換爲html格式文件
37     csvFile:  須要打開和讀取數據的csv文件路徑
38     HTMLFILE: 保存的html文件路徑
39     thNum:    csv文件的列數,需注意其中是否包括csv文件第1列無心義的數據,
40     此處包含所以在調用時須要增長1
41     '''
42     # HTML1 HTML2 分別爲html文件的首部和尾部
43     HTML1 = '''
44 <!DOCTYPE HTML>\n<html>\n<body>\n<meta charset=gbk2313>
45 <h1 align=center>Python成績表</h2>
46 <table border='blue'>\n'''
47     HTML2 = "</table>\n</body>\n</html>"
48     
49     csv_list = GetCsv(csvFile)      # 得到csv文件數據
50     hF = open(HTMLFILE, 'w') # 建立html文件
51     hF.write(HTML1)                                             # 寫入html文件首部
52     for i in range(1, thNum+1):        # 寫入表格的表頭(即第1行)
53         hF.write('<th width="20%">{}</th>\n'.format(csv_list[0][i]))
54     hF.write("</tr>\n")
55     for i in range(1, len(csv_list)):  # 寫入表格的數據,從第2行開始爲數據
56         hF.write(fill_data(csv_list[i], 5))
57     hF.write(HTML2)                                            # 寫入html文件尾部
58     hF.close()               # 關閉html文件
59 
60 CsvToHtml("D:\\Python_2.csv", "D:\\Python_2.html", 5)

 

 轉化效果展現(此處只選取前4次的成績進行作表操做):

 

 4、使用python寫CGI程序

  CGI(Common Gateway Interface)也叫通用網關接口,它是一個web服務器主機提供信息服務的標準接口,只要遵循這個接口,web服務器就能獲取客戶端提交的信息,轉交給服務端的CGI程序進行處理,而後將處理結果返回給客戶端。CGI通信是由兩部分組成的:一部分是用戶的瀏覽器顯示的頁面,也就是html頁面,另外一部分則是運行在服務器上的CGI程序。

1. 牛刀小試 —— 寫第一個CGI程序

# -*- coding:utf-8 -*-
''' my first CGI '''
print("Content-type:text/html\r\n\r\n")  # HTTP頭的一部分
print("<html>")
print("<head>")
print("<title>Hello World - First CGI Program</title>")
print("</head>")
print("<body>")
print("<h2 align=center>Hello World! <br>This is my first CGI program</h2>")
print("</body>")
print("</html>")

效果展現:

 

2. 大膽嘗試 —— 將剛剛的csv格式文件轉化爲CGI程序展現

  代碼展現(事實上只要對前面的代碼稍做修改便可):

 

 1 # -*- coding:utf-8
 2 '''
 3 This is a programe that can change csv into html.
 4 @author:步平凡
 5 '''
 6 
 7 def fill_data(excel, length=4):
 8     '''
 9     函數功能:填充表格的一行數據,返回html格式的字符串text
10     excel: 表格中的一行數據
11     length: 表格中須要填充的數據個數(即列數),默認爲4個
12     因爲生成csv文件時自動增長了1列數據,所以在format()函數從1開始
13     '''
14     text = '<tr>'
15     for i in range(length):
16         tmp = '<td align="center">{}</td>'.format(excel[i+1])
17         text += tmp
18     text += "</tr>\n"
19     return text
20 
21 def GetCsv(csvFile):
22     '''
23     函數功能:打開csv文件並獲取數據,返回文件數據
24     csvFile: csv文件的路徑和名稱
25     '''
26     ls = []
27     csv = open(csvFile, 'r', encoding="utf-8")
28     for line in csv:
29         line = line.replace('\n', '')
30         ls.append(line.split(','))
31     return ls
32 
33 
34 def CsvToHtml(csvFile, thNum):
35     '''
36     csvFile:  須要打開和讀取數據的csv文件路徑
37     HTMLFILE: 保存的html文件路徑
38     thNum:    csv文件的列數,需注意其中是否包括csv文件第1列無心義的數據,
39     此處包含所以在調用時須要增長1
40     '''
41     csv_list = GetCsv(csvFile)          # 得到csv文件數據
42     
43     print("Content-type:text/html\r\n\r\n")
44     print('''
45 <!DOCTYPE HTML>\n<html>\n<body>\n<meta charset=gbk2313>
46 <h1 align=center>Python成績表</h2>
47 <table border='blue'>\n''')             # 寫html文件首部
48     for i in range(1, thNum+1):         # 寫表格的表頭(即第1行)
49         print('<th width="20%">{}</th>'.format(csv_list[0][i]))
50     print("</tr>\n")
51     for i in range(1, len(csv_list)):   # 寫表格的數據,從第2行開始爲數據
52         print(fill_data(csv_list[i], 5))
53     print("</table>\n</body>\n</html>") # 寫html文件尾部
54 
55 CsvToHtml("D:\\Python_2.csv", 5)

效果展現:

相關文章
相關標籤/搜索