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'xe4xb8x96xe4xbax8bxe4xb8x80xe5x9cxbaxe5xa4xa7xe6xa2xa6xefxbcx8cxe4xbaxbaxe7x94x9fxe5x87xa0xe5xbaxa6xe7xa7x8bxe5x87x89xefxbcx9f'

3、方法学习。

(1)open() 方法用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OSError。

open(file, mode='r')

    注意:使用 open() 方法一定要保证关闭文件对象,即调用 close() 方法

       open() 函数常用形式是接收两个参数:文件名(file)和模式(mode)。

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

(I)7种基本的打开模式(mode):

      Python——自己的第一个网页(文件的使用)

   

(II)4个常用的文件(file)内容读取方法:

      Python——自己的第一个网页(文件的使用)

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

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

Python——自己的第一个网页(文件的使用)

(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)

  打印结果:

Python——自己的第一个网页(文件的使用)

(2) close() 方法用于关闭一个已打开的文件。关闭后的文件不能再进行读写操作, 否则会触发 ValueError 错误。

fileObject.close()

  在对文件操作完成后,将文件关闭是对文件的一种尊重,也是对电脑资源的减负

(3) write()方法 可将任何字符串写入一个打开的文件。

fileObject.write(string)

  注意:Python字符串可以是二进制数据,而不是仅仅是文字。

     write()方法不会在字符串的结尾添加换行符(' ')。 

Python——自己的第一个网页(文件的使用)

4、文件定位。

  在读写一行字符后,文件操作指针就处于该行的末尾,再次操作也只能对此位置后面的内容进行操作。

  比如对一个文件进行追写(“w+”)操作后------此时操作指针在文件末尾------想读取追写后的整个文件,此时用.readlinds()是无效的。

  <file>.seek(offset):改变当前文件操作指针的位置,offset含义如下:0 ——到文件开头;1 ——当前位置;2 ——文件结尾。

  更详细内容请前往菜鸟教程

 二、读入如下excel文件,并存为csv格式,并把优秀变成90分,良好80分,合格60,不合格0分。(未交的空着)

 Python——自己的第一个网页(文件的使用)

   这里先介绍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)

输出结果如下:

Python——自己的第一个网页(文件的使用)

 三、把上述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——自己的第一个网页(文件的使用)

四、运用Python CGI把上面的csv格式文件,用网页显示并截屏。

  首先要‘连接’,通过该网站指引完成https://baijiahao.baidu.com/s?id=1608396131352808822&wfr=spider&for=pc

  成功截图:

Python——自己的第一个网页(文件的使用)

   小编不负责任地将前面的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',呈现如下:

Python——自己的第一个网页(文件的使用)

   当然这不是真正的CGI编程,详细请了解