自己的第一个网页

一、文件读写的读书笔记

一、读写文件
#1、调用open()函数,返回一个File对象;
#2、调用File对象的read()或write()方法;
#3、调用File对象的close()方法,关闭该文件。
>>>baconFile = open('bacon.txt', 'w') #以写模式打开bacon,如果原本有该文件,会被覆盖,没有会创建一个新的文件。
>>>baconFile.write('Hello World!\n') #添加换行,将光标移到下一行
13
>>>baconFile.write('Bacon is not a vegetable.\n')
26
>>>baconFile.close()

>>>baconFile = open('bacon.txt', 'a') #以添加模式打开文件,往原始文件添加内容,如果没有该文件会创建一个文件。
>>>baconFile.write('Yes, you are right.\n')
20
>>>baconFile.close()

>>>baconFile = open('bacon.txt') #以读模式打开文件,返回一个File对象
>>>baconFile.read() #返回File对象的内容
'Hello World!\nBacon is not a vegetable.\nYes, you are right.\n'

>>>baconFile = open('bacon.txt')
>>>baconFile.readlines() #按行读取File对象的内容,返回一个字符串列表.
['Hello World!\n', 'Bacon is not a vegetable.\n', 'Yes, you are right.\n']

二、用shelve模块保存变量
利用shelve模块,可以将Python程序中的变量保存到二进制的shelf文件中,再次运行程序就可以从硬盘中恢复变量的数据。
>>>import shelve
>>>shelfFile = shelve.open('mydata')
>>>cats = ['Zophie','Pooka','Simon']
>>>shelfFile['cats'] = cats #将变量cats保存到shelfFile对象中
>>>shelfFile.close()
运行完后会有三个文件:mydata.bak\mydata.dat\mydata.dir。再次打开mydata文件后,可以之间调用里面的变量而无须重新创建变量。
>>>import shelve
>>>shelfFile = shelve.open('mydata')
>>>type(shelfFile)
shelve.DbfilenameShelf
>>>shelfFile['cats']
['Zophie', 'Pooka', 'Simon']
>>>list(shelfFile.keys())
['cats']
>>>list(shelfFile.values())
[['Zophie', 'Pooka', 'Simon']]
>>>shelfFile.close()

三、用pprint.pformat()函数保存变量
pprint.pformat()创建一个.py文件来保存基本数据类型变量(能编码为文本的),但不能保存诸如File对象。
>>>import pprint
>>>cats = [{'name':'Zophie','desc':'chubby'},{'name':'pooka','desc':'fluffy'}]
>>>pprint.pformat(cats) #返回一个字符串
fileobj = open('myCats.py','w')
>>>fileobj.write('cats = '+ pprint.pformat(cats) + '\n') #将变量写入mycats.py,以后可以继续用
>>>fileobj.close()
运行后会生成一个myCat.py文件,导入该模块后可以直接使用该模块的对象。
>>>import myCats
>>>myCats.cats[0]
{'desc': 'chubby', 'name': 'Zophie'}
>>>myCats.cats[0]['name']
'Zophie'

二、将excel文件存为csv格式,并把优秀转为90分等。

import pandas as pd

def ExcelToCsv_1(StartName, SheetName, EndName):

    grade = pd.read_excel(StartName, 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(EndName)
def ExcelToCsv_2(StartName, SheetName, EndName):
     '''
     函数功能: 将excel格式文件转换为csv格式文件,使用replace方法
     StartName: excel表格的文件路径
     SheetNmae: excel表格中的表格名称
     EndName:   csv文件的保存路径
     '''
     grade = pd.read_excel(StartName, sheet_name=SheetName)
     Grade = grade.replace("优秀", "90")
     Grade = Grade.replace("良好", "80")
     Grade = Grade.replace("不合格", "60")
     Grade = Grade.replace("合格", "60")
     Grade = Grade.fillna(value = 0)
     Grade.to_csv(EndName) 
ExcelToCsv_2("E:\\Python_1.xlsx", "Sheet1","E:\\Python_1.csv")
ExcelToCsv_1("E:\\Python_2.xlsx", "Sheet1","E:\\Python_2.csv")           

效果

 

三、把csv文件转换为html文件

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):
     '''
     
     csvFile: csv文件的路径和名称
     '''
     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, HTMLFILE, thNum):
     '''
     
     
     
     
     '''
     # HTML1 HTML2 分别为html文件的首部和尾部
     HTML1 = '''
 <!DOCTYPE HTML>\n<html>\n<body>\n<meta charset=gbk2313>
 <h1 align=center>Python成绩表</h2>
 <table border='blue'>\n'''
     HTML2 = "</table>\n</body>\n</html>"
     
     csv_list = GetCsv(csvFile)      # 获得csv文件数据
     hF = open(HTMLFILE, 'w') # 创建html文件
     hF.write(HTML1)                                             # 写入html文件首部
     for i in range(1, thNum+1):        # 写入表格的表头(即第1行)
         hF.write('<th width="20%">{}</th>\n'.format(csv_list[0][i]))
     hF.write("</tr>\n")
     for i in range(1, len(csv_list)):  # 写入表格的数据,从第2行开始为数据
         hF.write(fill_data(csv_list[i], 5))
     hF.write(HTML2)                                            # 写入html文件尾部
     hF.close()               # 关闭html文件
 
 CsvToHtml("D:\\Python_2.csv", "D:\\Python_2.html", 5)

四、网页

def fill_data(excel, length=4):
      '''
      函数功能:填充表格的一行数据,返回html格式的字符串text
     excel: 表格中的一行数据
     length: 表格中需要填充的数据个数(即列数),默认为4个
     由于生成csv文件时自动增加了1列数据,因此在format()函数从1开始
     '''
     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):
     '''
     函数功能:打开csv文件并获取数据,返回文件数据
     csvFile: csv文件的路径和名称
     '''
     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):
     '''
     csvFile:  需要打开和读取数据的csv文件路径
     HTMLFILE: 保存的html文件路径
     thNum:    csv文件的列数,需注意其中是否包括csv文件第1列无意义的数据,
     此处包含因此在调用时需要增加1
     '''
     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)):   # 写表格的数据,从第2行开始为数据
         print(fill_data(csv_list[i], 5))
     print("</table>\n</body>\n</html>") # 写html文件尾部
 
 CsvToHtml("E:\\Python_2.csv", 5)

效果

 

posted @ 2019-04-30 20:39  JM。  阅读(46)  评论(0)    收藏  举报