Python——自己的第一個網頁(文件的使用)


一、文件的學習。

1、概述。

  文件是一個存儲在輔助存儲器上的數據序列,可以包含任何數據內容。概念上,文件是數據的集合和抽象。

2、類型。

  文件包括兩種類型:文本文件二進制文件

  二進制文件和文本文件最主要的區別在於是否有統一的字符編碼。<二進制文件直接由比特0和比特1組成,沒有統一字符編碼>

 

下面運行代碼直觀感受一下二者的區別:

textFile = open("D:\\桌面\\pytest\\test.txt","rt",encoding="utf-8") #t表示文本文件方式
print(textFile.readline())
textFile.close()

binFile = open("D:\\桌面\\pytest\\test.txt","rb")   #b表示二進制文件方式
print(binFile.readline())
binFile.close()

結果如下:

世事一場大夢,人生幾度秋涼?

b'\xe4\xb8\x96\xe4\xba\x8b\xe4\xb8\x80\xe5\x9c\xba\xe5\xa4\xa7\xe6\xa2\xa6\xef\xbc\x8c\xe4\xba\xba\xe7\x94\x9f\xe5\x87\xa0\xe5\xba\xa6\xe7\xa7\x8b\xe5\x87\x89\xef\xbc\x9f'

 

3、方法學習。

(1)open() 方法用於打開一個文件,並返回文件對象,在對文件進行處理過程都需要使用到這個函數,如果該文件無法被打開,會拋出 OSError。

open(file, mode='r')

 

    注意:使用 open() 方法一定要保證關閉文件對象,即調用 close() 方法

       open() 函數常用形式是接收兩個參數:文件名(file)和模式(mode)。

       https://www.runoob.com/python/file-methods.html  

(I)7種基本的打開模式(mode):

      

 

 

   

(II)4個常用的文件(file)內容讀取方法:

      

 

ps:<file>.readlines()讀入的每一行內容都包括‘\n’字符(即列表中包括‘\n’)如

f = open("D:\\桌面\\pytest\\test.txt", "r",encoding="utf-8")
print(f.readlines(1))
f.close()

 

 

 

(III)File 對象的屬性

 

屬性 描述
file.closed 返回true如果文件已被關閉,否則返回false。
file.mode 返回被打開文件的訪問模式。
file.name 返回文件的名稱。

  測試: 

f = open("D:\\桌面\\pytest\\test.txt", "w")
print ("文件名: ", f.name)
print ("是否已關閉 : ", f.closed)
print ("訪問模式 : ", f.mode)
f.close()
print ("是否已關閉 : ", f.closed)

 

  打印結果:

 

 

(2) close() 方法用於關閉一個已打開的文件。關閉后的文件不能再進行讀寫操作, 否則會觸發 ValueError 錯誤。

fileObject.close()

  在對文件操作完成后,將文件關閉是對文件的一種尊重,也是對電腦資源的減負

 

(3) write()方法 可將任何字符串寫入一個打開的文件。

fileObject.write(string)

 

  注意:Python字符串可以是二進制數據,而不是僅僅是文字。

     write()方法不會在字符串的結尾添加換行符('\n')。 

 

4、文件定位。

  在讀寫一行字符后,文件操作指針就處於該行的末尾,再次操作也只能對此位置后面的內容進行操作。

  比如對一個文件進行追寫(“w+”)操作后------此時操作指針在文件末尾------想讀取追寫后的整個文件,此時用.readlinds()是無效的。

  <file>.seek(offset):改變當前文件操作指針的位置,offset含義如下:0 ——到文件開頭;1 ——當前位置;2 ——文件結尾。

  更詳細內容請前往菜鳥教程

 

 

 二、讀入如下excel文件,並存為csv格式,並把優秀變成90分,良好80分,合格60,不合格0分。(未交的空着)

 

 

 

 

   這里先介紹pandas。pandas是一個Python軟件包,提供快速,靈活和富於表現力的數據結構,旨在使使用“關系”或“標記”數據既簡單又直觀。它是數據處理的一個重要工具。詳細pandas介紹和學習

 

給出代碼:

import pandas as pd
Original = ['優秀','良好','合格','不合格']
Change = ['90分','80分','60分','0分']
f = pd.read_excel("D:\\桌面\\pytest\\Python成績登記信計.xlsx")
for index in range(len(f.index)):
    for i in range(4):
        f.iloc[index] = f.iloc[index].replace(Original[i],Change[i])
f.to_csv("D:\\桌面\\pytest\\Python成績登記信計.csv",index = False,header=1)

 

輸出結果如下:

 

 

 

 

 三、把上述csv格式文件轉換為html文件。

   pandas提供了完成該轉換的方法。

 

import pandas as pd
fo = pd.read_csv("D:\\桌面\\pytest\\Python成績登記信計.csv")
fo.to_html("D:\\桌面\\pytest\\Python成績登記信計.html",index = False,header=1)

 

 

 

截圖如下:

 

 

四、運用Python CGI把上面的csv格式文件,用網頁顯示並截屏。

  首先要‘連接’,通過該網站指引完成https://baijiahao.baidu.com/s?id=1608396131352808822&wfr=spider&for=pc

  成功截圖:

 

   小編不負責任地將前面的html文件,以筆記本方式打開,獲取其HTML代碼。如下:

  1 <table border="1" class="dataframe">
  2   <thead>
  3     <tr style="text-align: right;">
  4       <th>Unnamed: 0</th>
  5       <th></th>
  6       <th></th>
  7       <th></th>
  8       <th></th>
  9     </tr>
 10   </thead>
 11   <tbody>
 12     <tr>
 13       <td>序號</td>
 14     </tr>
 15     <tr>
 16       <td>1</td>
 17       <td>0分</td>
 18       <td>90分</td>
 19       <td>80分</td>
 20       <td>80分</td>
 21     </tr>
 22     <tr>
 23       <td>2</td>
 24       <td>90分</td>
 25       <td>90分</td>
 26       <td>90分</td>
 27       <td>90分</td>
 28     </tr>
 29     <tr>
 30       <td>3</td>
 31       <td>60分</td>
 32       <td>90分</td>
 33       <td>80分</td>
 34       <td>80分</td>
 35     </tr>
 36     <tr>
 37       <td>4</td>
 38       <td>0分</td>
 39       <td>90分</td>
 40       <td>90分</td>
 41       <td>80分</td>
 42     </tr>
 43     <tr>
 44       <td>5</td>
 45       <td>90分</td>
 46       <td>90分</td>
 47       <td>80分</td>
 48       <td>90分</td>
 49     </tr>
 50     <tr>
 51       <td>6</td>
 52       <td>90分</td>
 53       <td>90分</td>
 54       <td>90分</td>
 55       <td>80分</td>
 56     </tr>
 57     <tr>
 58       <td>7</td>
 59       <td>90分</td>
 60       <td>90分</td>
 61       <td>80分</td>
 62       <td>90分</td>
 63     </tr>
 64     <tr>
 65       <td>8</td>
 66       <td>90分</td>
 67       <td>90分</td>
 68       <td>80分</td>
 69       <td>80分</td>
 70     </tr>
 71     <tr>
 72       <td>9</td>
 73       <td>90分</td>
 74       <td>90分</td>
 75       <td>80分</td>
 76       <td>90分</td>
 77     </tr>
 78     <tr>
 79       <td>10</td>
 80       <td>90分</td>
 81       <td>90分</td>
 82       <td>90分</td>
 83       <td>90分</td>
 84     </tr>
 85     <tr>
 86       <td>11</td>
 87       <td>90分</td>
 88       <td>90分</td>
 89       <td>90分</td>
 90       <td>90分</td>
 91     </tr>
 92     <tr>
 93       <td>12</td>
 94       <td>90分</td>
 95       <td>90分</td>
 96       <td>90分</td>
 97       <td>90分</td>
 98     </tr>
 99     <tr>
100       <td>13</td>
101       <td>80分</td>
102       <td>60分</td>
103       <td>90分</td>
104       <td>90分</td>
105     </tr>
106     <tr>
107       <td>14</td>
108       <td>60分</td>
109       <td>90分</td>
110       <td>80分</td>
111       <td>80分</td>
112     </tr>
113     <tr>
114       <td>15</td>
115       <td>80分</td>
116       <td>90分</td>
117       <td>80分</td>
118       <td>80分</td>
119     </tr>
120     <tr>
121       <td>16</td>
122       <td>0分</td>
123       <td>0分</td>
124       <td>0分</td>
125       <td>0分</td>
126     </tr>
127     <tr>
128       <td>17</td>
129       <td>90分</td>
130       <td>90分</td>
131       <td>90分</td>
132       <td>90分</td>
133     </tr>
134     <tr>
135       <td>18</td>
136       <td>90分</td>
137       <td>90分</td>
138       <td>90分</td>
139       <td>90分</td>
140     </tr>
141     <tr>
142       <td>19</td>
143       <td>90分</td>
144       <td>90分</td>
145       <td>90分</td>
146       <td>90分</td>
147     </tr>
148     <tr>
149       <td>20</td>
150       <td>90分</td>
151       <td>60分</td>
152       <td>90分</td>
153       <td>80分</td>
154     </tr>
155     <tr>
156       <td>21</td>
157       <td>60分</td>
158       <td>60分</td>
159       <td>90分</td>
160       <td>80分</td>
161     </tr>
162     <tr>
163       <td>22</td>
164       <td>60分</td>
165       <td>90分</td>
166       <td>90分</td>
167       <td>80分</td>
168     </tr>
169     <tr>
170       <td>23</td>
171       <td>90分</td>
172       <td>90分</td>
173       <td>90分</td>
174       <td>60分</td>
175     </tr>
176     <tr>
177       <td>24</td>
178       <td>90分</td>
179       <td>90分</td>
180       <td>90分</td>
181       <td>0分</td>
182     </tr>
183     <tr>
184       <td>25</td>
185       <td>80分</td>
186       <td>90分</td>
187       <td>90分</td>
188       <td>90分</td>
189     </tr>
190     <tr>
191       <td>26</td>
192       <td>80分</td>
193       <td>90分</td>
194       <td>90分</td>
195       <td>90分</td>
196     </tr>
197     <tr>
198       <td>27</td>
199       <td>90分</td>
200       <td>90分</td>
201       <td>90分</td>
202       <td>90分</td>
203     </tr>
204     <tr>
205       <td>28</td>
206       <td>90分</td>
207       <td>0分</td>
208       <td>90分</td>
209       <td>80分</td>
210     </tr>
211     <tr>
212       <td>29</td>
213       <td>90分</td>
214       <td>90分</td>
215       <td>90分</td>
216       <td>90分</td>
217     </tr>
218     <tr>
219       <td>30</td>
220       <td>90分</td>
221       <td>80分</td>
222       <td>90分</td>
223       <td>90分</td>
224     </tr>
225     <tr>
226       <td>31</td>
227       <td>80分</td>
228       <td>90分</td>
229       <td>90分</td>
230       <td>80分</td>
231     </tr>
232     <tr>
233       <td>32</td>
234       <td>90分</td>
235       <td>90分</td>
236       <td>90分</td>
237       <td>80分</td>
238     </tr>
239     <tr>
240       <td>33</td>
241       <td>90分</td>
242       <td>60分</td>
243       <td>90分</td>
244       <td>0分</td>
245     </tr>
246     <tr>
247       <td>34</td>
248       <td>90分</td>
249       <td>90分</td>
250       <td>90分</td>
251       <td>80分</td>
252     </tr>
253     <tr>
254       <td>35</td>
255       <td>90分</td>
256       <td>90分</td>
257       <td>90分</td>
258       <td>80分</td>
259     </tr>
260     <tr>
261       <td>36</td>
262       <td>80分</td>
263       <td>90分</td>
264       <td>90分</td>
265       <td>90分</td>
266     </tr>
267     <tr>
268       <td>37</td>
269       <td>60分</td>
270       <td>80分</td>
271       <td>80分</td>
272       <td>80分</td>
273     </tr>
274     <tr>
275       <td>38</td>
276       <td>80分</td>
277       <td>90分</td>
278       <td>90分</td>
279       <td>80分</td>
280     </tr>
281     <tr>
282       <td>39</td>
283       <td> </td>
284       <td> </td>
285       <td> </td>
286       <td> </td>
287     </tr>
288     <tr>
289       <td>40</td>
290       <td> </td>
291       <td> </td>
292       <td> </td>
293       <td> </td>
294     </tr>
295   </tbody>
296 </table>
View Code

  然后用print()編寫一個test.py文件,代碼如下:

  1 #test.py
  2 #-*- coding:utf-8 -*-
  3 print('''
  4 <table border="1" class="dataframe">
  5   <thead>
  6     <tr style="text-align: right;">
  7       <th>Unnamed: 0</th>
  8       <th>一</th>
  9       <th>二</th>
 10       <th>三</th>
 11       <th>四</th>
 12     </tr>
 13   </thead>
 14   <tbody>
 15     <tr>
 16       <td>序號</td>
 17     </tr>
 18     <tr>
 19       <td>1</td>
 20       <td>0分</td>
 21       <td>90分</td>
 22       <td>80分</td>
 23       <td>80分</td>
 24     </tr>
 25     <tr>
 26       <td>2</td>
 27       <td>90分</td>
 28       <td>90分</td>
 29       <td>90分</td>
 30       <td>90分</td>
 31     </tr>
 32     <tr>
 33       <td>3</td>
 34       <td>60分</td>
 35       <td>90分</td>
 36       <td>80分</td>
 37       <td>80分</td>
 38     </tr>
 39     <tr>
 40       <td>4</td>
 41       <td>0分</td>
 42       <td>90分</td>
 43       <td>90分</td>
 44       <td>80分</td>
 45     </tr>
 46     <tr>
 47       <td>5</td>
 48       <td>90分</td>
 49       <td>90分</td>
 50       <td>80分</td>
 51       <td>90分</td>
 52     </tr>
 53     <tr>
 54       <td>6</td>
 55       <td>90分</td>
 56       <td>90分</td>
 57       <td>90分</td>
 58       <td>80分</td>
 59     </tr>
 60     <tr>
 61       <td>7</td>
 62       <td>90分</td>
 63       <td>90分</td>
 64       <td>80分</td>
 65       <td>90分</td>
 66     </tr>
 67     <tr>
 68       <td>8</td>
 69       <td>90分</td>
 70       <td>90分</td>
 71       <td>80分</td>
 72       <td>80分</td>
 73     </tr>
 74     <tr>
 75       <td>9</td>
 76       <td>90分</td>
 77       <td>90分</td>
 78       <td>80分</td>
 79       <td>90分</td>
 80     </tr>
 81     <tr>
 82       <td>10</td>
 83       <td>90分</td>
 84       <td>90分</td>
 85       <td>90分</td>
 86       <td>90分</td>
 87     </tr>
 88     <tr>
 89       <td>11</td>
 90       <td>90分</td>
 91       <td>90分</td>
 92       <td>90分</td>
 93       <td>90分</td>
 94     </tr>
 95     <tr>
 96       <td>12</td>
 97       <td>90分</td>
 98       <td>90分</td>
 99       <td>90分</td>
100       <td>90分</td>
101     </tr>
102     <tr>
103       <td>13</td>
104       <td>80分</td>
105       <td>60分</td>
106       <td>90分</td>
107       <td>90分</td>
108     </tr>
109     <tr>
110       <td>14</td>
111       <td>60分</td>
112       <td>90分</td>
113       <td>80分</td>
114       <td>80分</td>
115     </tr>
116     <tr>
117       <td>15</td>
118       <td>80分</td>
119       <td>90分</td>
120       <td>80分</td>
121       <td>80分</td>
122     </tr>
123     <tr>
124       <td>16</td>
125       <td>0分</td>
126       <td>0分</td>
127       <td>0分</td>
128       <td>0分</td>
129     </tr>
130     <tr>
131       <td>17</td>
132       <td>90分</td>
133       <td>90分</td>
134       <td>90分</td>
135       <td>90分</td>
136     </tr>
137     <tr>
138       <td>18</td>
139       <td>90分</td>
140       <td>90分</td>
141       <td>90分</td>
142       <td>90分</td>
143     </tr>
144     <tr>
145       <td>19</td>
146       <td>90分</td>
147       <td>90分</td>
148       <td>90分</td>
149       <td>90分</td>
150     </tr>
151     <tr>
152       <td>20</td>
153       <td>90分</td>
154       <td>60分</td>
155       <td>90分</td>
156       <td>80分</td>
157     </tr>
158     <tr>
159       <td>21</td>
160       <td>60分</td>
161       <td>60分</td>
162       <td>90分</td>
163       <td>80分</td>
164     </tr>
165     <tr>
166       <td>22</td>
167       <td>60分</td>
168       <td>90分</td>
169       <td>90分</td>
170       <td>80分</td>
171     </tr>
172     <tr>
173       <td>23</td>
174       <td>90分</td>
175       <td>90分</td>
176       <td>90分</td>
177       <td>60分</td>
178     </tr>
179     <tr>
180       <td>24</td>
181       <td>90分</td>
182       <td>90分</td>
183       <td>90分</td>
184       <td>0分</td>
185     </tr>
186     <tr>
187       <td>25</td>
188       <td>80分</td>
189       <td>90分</td>
190       <td>90分</td>
191       <td>90分</td>
192     </tr>
193     <tr>
194       <td>26</td>
195       <td>80分</td>
196       <td>90分</td>
197       <td>90分</td>
198       <td>90分</td>
199     </tr>
200     <tr>
201       <td>27</td>
202       <td>90分</td>
203       <td>90分</td>
204       <td>90分</td>
205       <td>90分</td>
206     </tr>
207     <tr>
208       <td>28</td>
209       <td>90分</td>
210       <td>0分</td>
211       <td>90分</td>
212       <td>80分</td>
213     </tr>
214     <tr>
215       <td>29</td>
216       <td>90分</td>
217       <td>90分</td>
218       <td>90分</td>
219       <td>90分</td>
220     </tr>
221     <tr>
222       <td>30</td>
223       <td>90分</td>
224       <td>80分</td>
225       <td>90分</td>
226       <td>90分</td>
227     </tr>
228     <tr>
229       <td>31</td>
230       <td>80分</td>
231       <td>90分</td>
232       <td>90分</td>
233       <td>80分</td>
234     </tr>
235     <tr>
236       <td>32</td>
237       <td>90分</td>
238       <td>90分</td>
239       <td>90分</td>
240       <td>80分</td>
241     </tr>
242     <tr>
243       <td>33</td>
244       <td>90分</td>
245       <td>60分</td>
246       <td>90分</td>
247       <td>0分</td>
248     </tr>
249     <tr>
250       <td>34</td>
251       <td>90分</td>
252       <td>90分</td>
253       <td>90分</td>
254       <td>80分</td>
255     </tr>
256     <tr>
257       <td>35</td>
258       <td>90分</td>
259       <td>90分</td>
260       <td>90分</td>
261       <td>80分</td>
262     </tr>
263     <tr>
264       <td>36</td>
265       <td>80分</td>
266       <td>90分</td>
267       <td>90分</td>
268       <td>90分</td>
269     </tr>
270     <tr>
271       <td>37</td>
272       <td>60分</td>
273       <td>80分</td>
274       <td>80分</td>
275       <td>80分</td>
276     </tr>
277     <tr>
278       <td>38</td>
279       <td>80分</td>
280       <td>90分</td>
281       <td>90分</td>
282       <td>80分</td>
283     </tr>
284     <tr>
285       <td>39</td>
286       <td> </td>
287       <td> </td>
288       <td> </td>
289       <td> </td>
290     </tr>
291     <tr>
292       <td>40</td>
293       <td> </td>
294       <td> </td>
295       <td> </td>
296       <td> </td>
297     </tr>
298   </tbody>
299 </table>
300 ''')
View Code

  將該文件移到cgi-bin文件下,在cmd連接后,在網頁鏈接輸入‘localhost:8001/cgi-bin/test.py',呈現如下:

 

   當然這不是真正的CGI編程,詳細請了解

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM