自己的第一个网站

一、文件读写的读书笔记。

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

2.Python打开文件的函数:open()函数格式如下: <变量名> = open(<文件名>, <打开模式>)

 

 

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

 

 

 4.文件的遍历代码:

1 fname = input("请输入要打开的文件: ")
2 fo = open(fname, "r")
3 for line in fo:
4     print(line)
5 fo.close()

5.文件的打印代码:

1 fname = input("请输入要打开的文件: ")
2 fo = open(fname, "r")
3 for line in fo.readlines():
4     print(line)
5 fo.close()

6.Python提供3个与文件内容写入。

 

二、Excel文件转为CSV格式文件。

1. Excel文件转换为CSV文件,并以CSV文件形式改变部分数据并输出结果。

 1 import pandas as pd
 2 def xlsx_to_csv_pd():
 3     data_xls = pd.read_excel('F:\Python成绩登记信计.xlsx', index_col=0)
 4     data_xls.to_csv('F:\Python成绩登记信计.csv', encoding='utf-8')
 5 if __name__ == '__main__':
 6     xlsx_to_csv_pd()
 7 fo=open("F:\Python成绩登记信计.csv",'r',encoding='utf-8')
 8 ls=[]
 9 for line in fo:
10     line = line.replace('\n','').replace('优秀','90').replace('良好','80').replace('不合格','0')
11     line = line.replace('合格','60')
12     ls = line.split(',')
13     lns=''
14     for s in ls:
15         lns+="{}\t".format(s)
16     print(lns)

 

 

 

2.打开Excel文件改变部分数据并转换为CSV文件。

 

import pandas as pd
def ExcelTurnCsv(Startfile, SheetName, Endfile):
    '''
    函数功能: 将excel格式文件转换为csv格式文件,使用iat方法
    Startfile: excel表格的文件路径
    SheetNmae: excel表格中的表格名称
    Endfile:   csv文件的保存路径
    '''
    grade = pd.read_excel(Startfile, sheet_name=SheetName)
    for i in range(len(grade.index)):
        for j in range(1, len(grade.columns)):
            if grade.iloc[i, j] == '优秀':
                grade.iat[i, j] = 90
            elif grade.iloc[i, j] == '良好':
                grade.iat[i, j] = 80
            elif grade.iloc[i, j] == '合格':
                grade.iat[i, j] = 60
            else:
                grade.iat[i, j] = 0
    grade.to_csv(Endfile)
ExcelTurnCsv("F:\\Python成绩登记信计.xlsx", "Sheet1", "F:\\Python成绩登记信计.csv")

 

 

 

 

 

 

 

三、CSV文件转为HTML文件。

import pandas as pd
df = pd.read_csv('F:\Python成绩登记信计.csv')
print(df.to_html())
df.to_html('F:\Python成绩登记信计.html')

 

<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>Unnamed: 0</th>
      <th>Unnamed: 0.1</th>
      <th></th>
      <th></th>
      <th></th>
      <th></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>0</td>
      <td>序号</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
    </tr>
    <tr>
      <th>1</th>
      <td>1</td>
      <td>1</td>
      <td>0</td>
      <td>90</td>
      <td>80</td>
      <td>80</td>
    </tr>
    <tr>
      <th>2</th>
      <td>2</td>
      <td>2</td>
      <td>90</td>
      <td>90</td>
      <td>90</td>
      <td>90</td>
    </tr>
    <tr>
      <th>3</th>
      <td>3</td>
      <td>3</td>
      <td>60</td>
      <td>90</td>
      <td>80</td>
      <td>80</td>
    </tr>
    <tr>
      <th>4</th>
      <td>4</td>
      <td>4</td>
      <td>0</td>
      <td>90</td>
      <td>90</td>
      <td>80</td>
    </tr>
    <tr>
      <th>5</th>
      <td>5</td>
      <td>5</td>
      <td>90</td>
      <td>90</td>
      <td>80</td>
      <td>90</td>
    </tr>
    <tr>
      <th>6</th>
      <td>6</td>
      <td>6</td>
      <td>90</td>
      <td>90</td>
      <td>90</td>
      <td>80</td>
    </tr>
    <tr>
      <th>7</th>
      <td>7</td>
      <td>7</td>
      <td>90</td>
      <td>90</td>
      <td>80</td>
      <td>90</td>
    </tr>
    <tr>
      <th>8</th>
      <td>8</td>
      <td>8</td>
      <td>90</td>
      <td>90</td>
      <td>80</td>
      <td>80</td>
    </tr>
    <tr>
      <th>9</th>
      <td>9</td>
      <td>9</td>
      <td>90</td>
      <td>90</td>
      <td>80</td>
      <td>90</td>
    </tr>
    <tr>
      <th>10</th>
      <td>10</td>
      <td>10</td>
      <td>90</td>
      <td>90</td>
      <td>90</td>
      <td>90</td>
    </tr>
    <tr>
      <th>11</th>
      <td>11</td>
      <td>11</td>
      <td>90</td>
      <td>90</td>
      <td>90</td>
      <td>90</td>
    </tr>
    <tr>
      <th>12</th>
      <td>12</td>
      <td>12</td>
      <td>90</td>
      <td>90</td>
      <td>90</td>
      <td>90</td>
    </tr>
    <tr>
      <th>13</th>
      <td>13</td>
      <td>13</td>
      <td>80</td>
      <td>60</td>
      <td>90</td>
      <td>90</td>
    </tr>
    <tr>
      <th>14</th>
      <td>14</td>
      <td>14</td>
      <td>60</td>
      <td>90</td>
      <td>80</td>
      <td>80</td>
    </tr>
    <tr>
      <th>15</th>
      <td>15</td>
      <td>15</td>
      <td>80</td>
      <td>90</td>
      <td>80</td>
      <td>80</td>
    </tr>
    <tr>
      <th>16</th>
      <td>16</td>
      <td>16</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
    </tr>
    <tr>
      <th>17</th>
      <td>17</td>
      <td>17</td>
      <td>90</td>
      <td>90</td>
      <td>90</td>
      <td>90</td>
    </tr>
    <tr>
      <th>18</th>
      <td>18</td>
      <td>18</td>
      <td>90</td>
      <td>90</td>
      <td>90</td>
      <td>90</td>
    </tr>
    <tr>
      <th>19</th>
      <td>19</td>
      <td>19</td>
      <td>90</td>
      <td>90</td>
      <td>90</td>
      <td>90</td>
    </tr>
    <tr>
      <th>20</th>
      <td>20</td>
      <td>20</td>
      <td>90</td>
      <td>60</td>
      <td>90</td>
      <td>80</td>
    </tr>
    <tr>
      <th>21</th>
      <td>21</td>
      <td>21</td>
      <td>60</td>
      <td>60</td>
      <td>90</td>
      <td>80</td>
    </tr>
    <tr>
      <th>22</th>
      <td>22</td>
      <td>22</td>
      <td>60</td>
      <td>90</td>
      <td>90</td>
      <td>80</td>
    </tr>
    <tr>
      <th>23</th>
      <td>23</td>
      <td>23</td>
      <td>90</td>
      <td>90</td>
      <td>90</td>
      <td>60</td>
    </tr>
    <tr>
      <th>24</th>
      <td>24</td>
      <td>24</td>
      <td>90</td>
      <td>90</td>
      <td>90</td>
      <td>0</td>
    </tr>
    <tr>
      <th>25</th>
      <td>25</td>
      <td>25</td>
      <td>80</td>
      <td>90</td>
      <td>90</td>
      <td>90</td>
    </tr>
    <tr>
      <th>26</th>
      <td>26</td>
      <td>26</td>
      <td>80</td>
      <td>90</td>
      <td>90</td>
      <td>90</td>
    </tr>
    <tr>
      <th>27</th>
      <td>27</td>
      <td>27</td>
      <td>90</td>
      <td>90</td>
      <td>90</td>
      <td>90</td>
    </tr>
    <tr>
      <th>28</th>
      <td>28</td>
      <td>28</td>
      <td>90</td>
      <td>0</td>
      <td>90</td>
      <td>80</td>
    </tr>
    <tr>
      <th>29</th>
      <td>29</td>
      <td>29</td>
      <td>90</td>
      <td>90</td>
      <td>90</td>
      <td>90</td>
    </tr>
    <tr>
      <th>30</th>
      <td>30</td>
      <td>30</td>
      <td>90</td>
      <td>80</td>
      <td>90</td>
      <td>90</td>
    </tr>
    <tr>
      <th>31</th>
      <td>31</td>
      <td>31</td>
      <td>80</td>
      <td>90</td>
      <td>90</td>
      <td>80</td>
    </tr>
    <tr>
      <th>32</th>
      <td>32</td>
      <td>32</td>
      <td>90</td>
      <td>90</td>
      <td>90</td>
      <td>80</td>
    </tr>
    <tr>
      <th>33</th>
      <td>33</td>
      <td>33</td>
      <td>90</td>
      <td>60</td>
      <td>90</td>
      <td>0</td>
    </tr>
    <tr>
      <th>34</th>
      <td>34</td>
      <td>34</td>
      <td>90</td>
      <td>90</td>
      <td>90</td>
      <td>80</td>
    </tr>
    <tr>
      <th>35</th>
      <td>35</td>
      <td>35</td>
      <td>90</td>
      <td>90</td>
      <td>90</td>
      <td>80</td>
    </tr>
    <tr>
      <th>36</th>
      <td>36</td>
      <td>36</td>
      <td>80</td>
      <td>90</td>
      <td>90</td>
      <td>90</td>
    </tr>
    <tr>
      <th>37</th>
      <td>37</td>
      <td>37</td>
      <td>60</td>
      <td>80</td>
      <td>80</td>
      <td>80</td>
    </tr>
    <tr>
      <th>38</th>
      <td>38</td>
      <td>38</td>
      <td>80</td>
      <td>90</td>
      <td>90</td>
      <td>80</td>
    </tr>
    <tr>
      <th>39</th>
      <td>39</td>
      <td>39</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
    </tr>
    <tr>
      <th>40</th>
      <td>40</td>
      <td>40</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
      <td>0</td>
    </tr>
  </tbody>
</table>

 

四、用Python CGI转为网页显示。

 

1.Web 服务器支持及配置

 

在你进行 CGI 编程前,确保您的 Web 服务器支持 CGI 及已经配置了 CGI 的处理程序。

 

Apache 支持 CGI 配置:

 

设置好CGI目录:

 

ScriptAlias /cgi-bin/ /var/www/cgi-bin/

 

 

所有的HTTP服务器执行 CGI 程序都保存在一个预先配置的目录。这个目录被称为 CGI 目录,并按照惯例,它被命名为 /var/www/cgi-bin 目录。

 

CGI 文件的扩展名为 .cgi,python 也可以使用 .py 扩展名。

 

默认情况下,Linux 服务器配置运行的 cgi-bin 目录中为 /var/www。

 

如果你想指定其他运行 CGI 脚本的目录,可以修改 httpd.conf 配置文件,如下所示:

 

<Directory "/var/www/cgi-bin">
   AllowOverride None
   Options +ExecCGI
   Order allow,deny
   Allow from all
</Directory> 

在 AddHandler 中添加 .py 后缀,这样我们就可以访问 .py 结尾的 python 脚本文件:

 

AddHandler cgi-script .cgi .pl .py
 
2.web服务器搭建
       (1)首先,在你的电脑里找一个目录,新建一个文件夹,叫做“www”,在“www”文件夹下面新建一个目录,叫做“cgi-bin”,我直接建立在了d盘的根目录下
       (2)然后win+cmd打开命令行
 
 
def fill_data(excel, length=4):
    text = '<tr>'
    for i in range(length):
        tmp = '<td align="center">{}</td>'.format(excel[i+1])
        text += tmp
    text += "</tr>\n"
    return text

def GetCsv(csvFile):
    ls = []
    csv = open(csvFile, 'r',encoding="utf-8")
    for line in csv:
        line = line.replace('\n', '')
        ls.append(line.split(','))
    return ls

def CsvToHtml(csvFile, thNum):
    csv_list = GetCsv(csvFile)          # 获得csv文件数据
    print("Content-type:text/html\r\n\r\n")
    print('''
<!DOCTYPE HTML>\n<html>\n<body>\n<meta charset=gbk2313>
<h1 align=center>Python成绩登记信计</h2>
<table border='blue'>\n''')             # 写html文件首部
    for i in range(1, thNum+1):         # 写表格的表头(即第1行)
        print('<th width="20%">{}</th>'.format(csv_list[0][i]))
    print("</tr>\n")
    for i in range(1, len(csv_list)):   # 
        print(fill_data(csv_list[i], 5))
    print("</table>\n</body>\n</html>") # 写html文件尾部

CsvToHtml("F://Python成绩登记信计.csv", 5)

 

 

 

 

 

posted @ 2020-05-22 10:48  贾诩来编程  阅读(156)  评论(1编辑  收藏  举报