打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Python 之 文件读写的学习

  文件是一个存储在辅助存储器上的数据序列,可以包含任何数据内容,其中包括两种类型:文本文件和二进制文件。文件读写是Python代码调用电脑文件的主要功能,能被用于读取和写入文本记录、音频片段、Excel文档、保存邮件以及任何保存在电脑上的东西。

 

文件读写

一、文件的打开(Python对文本文件和二进制文件采用统一的操作步骤,即“打开-操作-关闭”。)

 

(1)通过解释器内置的open()函数打开一个文件,并实现该文件与一个程序变量的关联,open()函数格式如下:

<变量名> = open(<文件路径>, <打开模式>)

 

 可以看到,open()函数有两个参数:

  • 文件的保存地址:文件的地址有两种,绝对路径和相对路径。

  绝对路径就是文件最完整的路径,相对路径就是相对于当前文件夹的路径,当前文件夹就是你编写的这个py文件所放的文件夹。如果你要打开的文件和open.py在同一个文件夹里,这时只要使用相对路径就行了,而要使用其他文件夹的文件则需使用绝对路径。

 

不过需要注意的是:\在Python中是转义字符,所以时常会有冲突。为了避坑,Windows的绝对路径通常要稍作处理,写成以下两种形式:

1 open('C:\\Users\\Administrator\\Desktop\\test\\abc.txt')2 #将'\'替换成'\\'3 4 open(r'C:\Users\Administrator\Desktop\test\abc.txt')5 #在路径前加上字母r

 

  • 打开文件时的模式:open()函数提供7种基本的打开模式。

 

 

  如果想要读取或者写入的数据不是文本内容,而是音频和图片,可以使用‘rb’模式或者‘wb’模式,因为图片和音频是以二进制的形式保存的。

 

(2)为了避免打开文件后忘记关闭,占用资源或当不能确定关闭文件的恰当时机的时候,我们可以用到关键字with,例如:

 

 1 #使用open()函数 2 f = open('abc.txt', 'a') 3 f.write('abc') 4 f.close() 5  6 #使用关键字with 7 #with open('文件地址','读写模式') as 变量名: 8  9 with open('abc.txt', 'a') as:        #注意冒号:不能丢, 而且对文件进行操作时需要缩进10     f.write('abc')11 12 #无需用close()关闭

 

二、文件的读取

  Python提供4个常用的文件内容读取方法:

 

    对文件的读取操作需要将文件中的数据加载到内存中,而上面所用到的read()方法会一次性把文件中所有的内容全部加载到内存中,当遇到一个非常大的文件时,会很容易把内存消耗完,显然是不合理的。所以在读取文件时,通常采用下面两种方法,对文件内容进行逐行处理:

 1 #使用readlines()函数 2 f = open('abc.txt', 'r') 3 for line in f.readlines(): 4     #处理一行数据 5 f.close() 6  7 #直接遍历文件 8 f = open('abc.txt', 'r') 9 for line in f:10     #处理一行数据11 f.close()

 

三、文件的写入

  Python提供3个与文件内容写入有关的方法:

例子如下:

1 ls = ['a', 'b','c']2 with open('abc.txt', 'w ') as f:3     f.writelines(ls)        #使用writelines()函数后,文件指针会指在写入内容的后面4     f.seek(0)               #使用seek()函数,将文件指针返回文件开头.如果把这行代码注释掉,后面将不会打印出写入的内容5     for line in f:6         print(line)

 

读取excel文件,修改并存为csv文件  

  需要读入上面的Excel表格,并且将优秀改为90分,良好80分,合格60,不合格0分,最后存为csv文件。如图可以看到这个表格的数据不是很整齐,下面我会使用pandas库处理这个Excel表格。(pandas库的简单使用

 

(1)将原表格处理一下

1 import pandas as pd2 df = pd.read_excel("Python成绩登记信计.xlsx", header=1)                 #读入excel文件,创建DataFrame实例3 df.columns = ['序号','一','二','三','四']                               #人为设置columns,就是每一列的名字4 df.set_index('序号', inplace = True)                                   #因为DataFrame有自己的默认索引,这里设置'序号'作为索引5 df.to_excel("newexcel.xlsx")                                          #保存为新的Excel文件

 

得到的新表格如下:

  

(2)修改excel数据,并存为csv文件

1 import pandas as pd2 df = pd.read_excel("newexcel.xlsx")3 chg = {'优秀':'90','良好':'80','合格':'60','不合格':'0'}                 #创建一个对应成绩的字典4 Grade = df.columns.values[1:]                                          #取出每一列数据的列名5 for col in Grade:                               6     for i in chg:7         df[col][df[col] == i] = chg[i]                                 #找到col表示的列名的那一列,在该列进行比较8 df.to_csv("newcsv.csv", index = False, header = True)                  #保存为csv文件

 

得到的csv文件如下:

 

将csv格式文件转换成html文件

  pandas库的DataFrame类提供了比较简单的保存为html文件的方法,如下:

1 import pandas as pd2 df = pd.read_csv("newcsv.csv")                                          #读入csv文件,创建一个DataFrame实例3 df.to_html("newhtml.html", index = False, header = True)                #保存为html格式文件

  

  打开该html文件后,效果如:

 

 

运用Python CGI将上面的csv格式文件在网页上显示

  由于接下来需要用到CGI的知识,所以我这里给出简单学习CGI的链接。(Python CGI安装教程及简单使用修改httpd.conf文件参考教程

 

  安装以及配置完Apache之后,我将我完成的html文件放入文件夹Apache24/htdocs中,用记事本的形式打开这个html文件,得到:

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

   

  打开网页,输入http://localhost/newhtml.html,发现网页出现中文乱码,如下:

 

  接着我在百度找到了解决方法,并且对这个html进行了修改,修改为:

 

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

 

  最后结果为:

 

  

来源:https://www.icode9.com/content-1-703551.html
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
pandas 数据分组运算
Python数据分析实战:获取数据
Python 读取txt、csv、mat数据并载入到数组
python读取大型数据文件的6种方式,各有千秋!
Pandas常用命令汇总,建议收藏!
用 Python 高效处理大文件
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服