1.文件读写的读书笔记
文件包括两种类型:文本文件和二进制文件,二进制文件直接由比特0和比特1组成,没有统一的字符编码。二进制文件和文本文件最主要的区别在于是否有统一的字符编码。无论文件创建为文本文件或者二进制文件,都可以用“文本文件方式”和“二进制文件方式”打开,只是打开后的操作不同。
下面用一些例子来更好理解文本文件和二进制文件的区别。
textFile=open("C:/Users/86183/Desktop/新建文本文档.txt","rt")#t表示文本文件方式 print(textFile.readline()) textFile.close binFile=open("C:/Users/86183/Desktop/新建文本文档.txt","rb")#r表示二进制文件方式 print(binFile.readline()) binFile.close
运行结果:
在以上的运行结果中,可以看出采用文本方式读入文件,文件经过编码形成字符串,打印出有含义的字符;采用二进制方式打开文件,文件被解析为字节(byte)流。由于存在编码,字符串中的一个字符由2个字节表示。
文件的打开关闭:python对文本文件和二进制文件采用统一的操作步骤,即“打开--操作--关闭”
python通过解释器内置的open()函数打开一个文件,并实现该文件与一个程序变量的关联,open()函数格式如下:<变量名>=open(<文件名>,<打开模式>)。文件名可以是文件的实际名字,也可以是包含完整路径的名字。open()函数提供了7种基本的打开模式,具体如下。
根据打开方式不同可以对文件进行相应的读写操作,Python提供4个常用的文件内容读取方法
文本文件逐行打印实例:
fname=input("请输入要打开的文件") fo=open(fname,"r") for line in fo.readlines(): print(line) fo.close()
运行结果:
遍历文件的所有行可以直接这样完成
fname=input("请输入要打开的文件") fo=open(fname,"r") for line in fo: print(line) fo.close()
运行结果:
如果程序需要逐行处理文件内容,建议采用上述代码格式:
fo=open(fname,"r") for line in fo: #处理一行数据 fo.close()
Python提供3个与文件内容写入有关的方法,如下表所示。
微实例:
fname=input("请输入要打开的文件") fo=open(fname,"w+") ls=["唐诗","宋词","元曲"] fo.writelines(ls) for line in fo: print(line) fo.close()
运行结果如下:
2读入成绩Excel文件,并存为CSV格式,并把优秀变成90分,良好80分,及格60分,没有交0分。
首先是Excel文件存为CSV格式代码
import pandas as pd data = pd.read_excel(‘C:/Users/86183/Desktop/Python成绩登记信计.xlsx‘,‘Sheet1‘,index_col=0) data.to_csv(‘data1.csv‘,encoding=‘utf-8‘)
其次是替换CSV格式中部分字符的代码:
import os import os.path csvpath=os.getcwd()+"\\" f=open(‘data1.csv‘,encoding="utf-8") content = f.read() f.close() t = content.replace("优秀","90分").replace("良好","80分").replace("不合格","0分").replace("合格","60分") with open("kong1.CSV","w",encoding=‘gbk‘) as f1: f1.write(t)
开始时的文件:
处理后的文件:
CSV文件转换为html格式
import pandas fo = pd.read_csv("C:/Users/86183/Desktop/kong1.CSV",encoding = ‘GB2312‘) fo.to_html("C:/Users/86183/Desktop/kong1.html",index = False,header=1)
运行结果: