一、文件的学习。
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):
(II)4个常用的文件(file)内容读取方法:
ps:<file>.readlines()读入的每一行内容都包括‘ ’字符(即列表中包括‘ ’)如
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()方法不会在字符串的结尾添加换行符(' ')。
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>
然后用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 ''')
将该文件移到cgi-bin文件下,在cmd连接后,在网页链接输入‘localhost:8001/cgi-bin/test.py',呈现如下:
当然这不是真正的CGI编程,详细请了解。