文件的使用
一、文件的概述
文件是一个存储在辅助存储器上的数据序列,可以包含任何数据内容。概念上,文件是数据的集合和抽象,类似的,函数是程序的集合和抽象,用文件形式组织和表达数据更有效也更为灵活,
二、文件包括两种类型:文本文件和二进制文件。
1.文本文件
一般由单一特定编码的字符组成,如UTF-8编码,内容容易统一展示和阅读。
2.二进制文件
直接由比特0和比特1组成,没有统一字符编码,文件内部数据的组织格式与文件用途有关。
三、文件的打开
<变量名>=open(<变量名>,<打开模式>)
文件的打开模式
文件的打开模式 | 含义 |
'r' | 只读模式,如果文件不存在,返回异常FileNotFoundError,默认值 |
‘w' | 覆盖写模式,文件不存在则创建,存在则完全覆盖 |
'x' | 创建写模式,文件不存在则创建,存在则返回异常FileNotFoundError |
'a' | 追加写模式,文件不存在则创建,存在则在文件最后追加内容 |
'b' | 二进制文件模式 |
't' | 文本文件模式,默认值 |
'+' | 与r/w/x/a一同使用,在原功能基础上增加读写功能 |
注意:'r','w','x','a'可以和'b','t','+'组合使用
例如:打开文本文件模式
text=open('7.1.txt','rt')
打开二进制文件
text=open('7.1.txt','rb')
四、文件的读写
读取
操作方法 | 含义 |
<file>.read(size=-1) | 从文件中读入整个文件内容,如果给出参数,读入前size长度的字符串或者字符流 |
<file>.readline(size=-1) | 从文件中读入一行内容,如果给出参数,读入该行前size长度的字符串或者字符流 |
<file>.readlines(hint=-1) | 从文件中读入所有行,以每行为元素形成一个列表如果给出参数,读入hint行 |
写入
方法 | 含义 |
<file>.write(s) | 向文件写入一个字符串或者字符流 |
<file>.writelines(lines) | 将一个元素全为字符串的列表写入文件 |
<file>.seel(offset) | 改变当前文件操作指针的位置,offset的值:0--文件开头;1--当前位置;2--文件结尾 |
五、文件的关闭
<变量名>.close()
六、文件的简单应用
1 >>> wj=open('C:\\Users\Administrator\Desktop\Python\文件的打开.txt','rt') #打开文件
2 >>> print(wj.read()) #输出文件内容
3 唐诗宋词元曲
4 >>> wj.close() #关闭文件
5 >>> lp=open('C:\\Users\Administrator\Desktop\Python\文件的打开.txt',"w+") #打开文件的读写模式
6 >>> text=["是中国传统知识"] #将要写入的内容
7 >>> lp.writelines(text) #将文件写入
8 >>> lp.seek(0)
9 0
10 >>> for line in lp: #输出文件内容
11 print(line)
12
13
14 是中国传统知识
15 >>> lp.close() #关闭文件
七,将两个excle文件并存为csv格式文件
代码如下
# -*- coding:utf-8 import pandas as pd def zhuan1(wenjian, mingcheng, baocun): grade = pd.read_excel(wenjian, sheet_name=mingcheng) for i in range(len(grade.index)): for j in range(1, len(grade.columns)): if grade.iloc[i, j] == '优秀':#查看第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 elif grade.iloc[i,j] == '不合格': grade.iat[i,j] = 60 else: grade.iat[i, j] = 0 grade.to_csv(baocun) def zhuan2(wenjian, mingcheng, baocun): grade = pd.read_excel(wenjian, sheet_name=mingcheng) Grade = grade.replace("优秀", "90")#替换为分数形式 Grade = Grade.replace("良好", "80") Grade = Grade.replace("不合格", "60") Grade = Grade.replace("合格", "60") Grade = Grade.fillna(value = 0) Grade.to_csv(baocun) zhuan2("D:\\Python成绩(2).xlsx", "Sheet1", "D:\\Python_1.csv") zhuan1("D:\\Python成绩登记信计(1).xlsx", "Sheet1", "D:\\Python_2.csv")
结果如图所示
原图:python成绩(2)
转换之后
原图:python成绩登记信计(1)
转换之后
八、尝试将csv文件转化为html文件
# -*- coding: utf-8 -*- """ csv-->html @author: xiayiLL """ def Change(csvwj,htmlwj,lie): seg1=''' <!DOCTYPE HTML>\n<html>\n<body>\n<meta charset=gbk2313> <h1 align=center>Python成绩表</h2> <table border='blue'>\n''' seg2="</table>\n</body>\n</html>" seg3= "</tr>\n" CH1=open(csvwj,'r',encoding="utf-8")#打开文件 ls = [] for line in CH1: line = line.replace('\n', '') ls.append(line.split(',')) CH1.close() CH2=open(htmlwj,'w') CH2.write(seg1) for i in range(1, lie+1): # 写入表格的表头(即第1行) CH2.write('<th width="20%">{}</th>\n'.format(ls[0][i])) CH2.write(seg3) for i in range(1, len(ls)): # 写入表格的数据,从第2行开始为数据 CH2.write(fill_wj(ls[i],5)) CH2.write(seg2) # 写入html文件尾部 CH2.close() def fill_wj(biaoge,length=4): wj='<tr>' for i in range(length): tmp = '<td align="center">{}</td>'.format(biaoge[i+1]) wj += tmp wj += "</tr>\n" return wj Change("D:\\Python_3.csv","D:\\Python_3.html",5)
结果如图所示
九、书写CGI文件
代码实现
1 # -*- coding:utf-8 2 3 def fill_data(excel, length=4): 4 text = '<tr>' 5 for i in range(length): 6 tmp = '<td align="center">{}</td>'.format(excel[i+1]) 7 text += tmp 8 text += "</tr>\n" 9 return text 10 11 def GetCsv(csvFile): 12 13 ls = [] 14 csv = open(csvFile, 'r', encoding="utf-8") 15 for line in csv: 16 line = line.replace('\n', '') 17 ls.append(line.split(',')) 18 return ls 19 20 21 def CsvToHtml(csvFile, thNum): 22 23 csv_list = GetCsv(csvFile) # 获得csv文件数据 24 25 print("Content-type:text/html\r\n\r\n") 26 print(''' 27 <!DOCTYPE HTML>\n<html>\n<body>\n<meta charset=gbk2313> 28 <h1 align=center>Python成绩表</h2> 29 <table border='blue'>\n''') # 写html文件首部 30 for i in range(1, thNum+1): # 写表格的表头(即第1行) 31 print('<th width="20%">{}</th>'.format(csv_list[0][i])) 32 print("</tr>\n") 33 for i in range(1, len(csv_list)): # 写表格的数据,从第2行开始为数据 34 print(fill_data(csv_list[i], 5)) 35 print("</table>\n</body>\n</html>") # 写html文件尾部 36 37 CsvToHtml("D:\\Python_3.csv", 5)