自己的第一个网页
一、文件读写的读书笔记
一、读写文件
#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)
效果


浙公网安备 33010602011771号