为了长期保存数据以便重复使用、修改和共享, 必须将数据以文件的形式存储到外部存储介质。
Python中,文件分为文本文件和二进制文件两类:
1.文本文件存储的是常规字符串,由若干文本行组成,通 常每行以换行符‘\n’结尾。
2.二进制文件把对象内容以字节串(bytes)进行存储,无法 用记事本或其他普通字处理软件直接进行编辑。
1.文本的基本处理:
打开文件 :
建立磁盘上的文件与程序中的对象相关联
通过相关的文件对象获得
文件操作:
读取
写入
定位
其他:追加、 计算等
关闭文件 :
切断文件与程序的联系
写入磁盘,并释放文件缓冲区
open()
<variable> = open (<name>, <mode>) <name>磁盘文件名 <mode>打开模式
模式说明 :
r 读模式(默认模式,可省略),如果文件不存在则抛出异 常
w 写模式,如果文件已存在,先清空原有内容
x 写模式,创建新文件,如果文件已存在则抛出异常
a 追加模式,不覆盖文件中原有内容 b二进制模式(可与其他模式组合使用)
t 文本模式(默认模式,可省略)
+ 读、写模式(可与其他模式组合使用)
文件打开:
fp = open('test.txt', 'a')
print('Hello,world!', file = fp)
fp.close()
文件常用属性:
closed 判断文件是否关闭,若文件被关闭,则返 回True
mode 返回文件的打开模式
name 返回文件的名称
def main():
fname=input("input file name:")
infile=open(fname,"r",encoding="utf-8")
print(infile.mode)
infile.close()
print(infile.closed)
print(infile.name)
main()
2.with-自动关闭文件资源
with open('sample.txt','a+') as f:
f.write(s)
3.文件的读取:
read() 返回值为包含整个文件内容的一个字符串。
readline() 返回值为文件下一行内容的字符串。
readlines() 返回值为整个文件内容的列表,每项 是以换行符为结尾的一行字符串
def main():
fname=input("input file name:")
infile=open(fname,"r",encoding="utf-8")
data=infile.read()
print(data)
main()
encoding文件编码方式:
ASCII码 7个二进制编码,表示128个字符
Unicode 跨语言跨平台(定长2个字节)
UTF-8 可变长的Unicode码
gbk 可支持中文编码
#读取并输出文件前5行
def main():
fname=input("input file name:")
infile=open(fname,"r",encoding='utf-8')
for i in range(5):
line=infile.readline()
print(line)
main()
4.写入文件:
从计算机内存向文件写入数据
write(): 把含有文本数据或二进制数据块的字符串 写入文件中。
writelines(): 针对列表操作,接受一个字符串列表 作为参数,将它们写入文件。
outfile=open("outfile.txt","w")
outfile.writelines(["hello"," ","world"])
outfile.close()
infile=open("outfile.txt","r")
line=infile.readline()
print(line)
5.遍历文件:
通用代码框架:
file = open (someFile, "r")
for line in file.readlines(): #处理一行文件内容
file.close()
简化代码框架:
file = open (someFile, "r")
for line in file: #处理一行文件内容
file.close()
6.文件的拷贝:
def filecopy():
f1=input("f1:").strip()
f2=input("f2:").strip()
infile=open(f1,"r")
outfile=open(f2,"w")
countlines=countchars=0
for line in infile:
outfile.write(line)
countlines+=1
countchars+=len(line)
outfile.close()
print("countlines:",countlines," countchars:",countchars)
filecopy()
python操作word文档:
安装python-docx
pip install python-docx
主要操作对象 、
Document对象,表示一个word文档。
file=docx.Document(“文件名”) #打开文档
Paragraph对象,表示word文档中的一个段落
file.paragraphs() #文档中所有段落
Paragraph对象的text属性,表示段落中的文本内容。
段落对象.text #段落文本内容
os.listdir() #加载某个目录下的所有文件
python操作excel文档:
openpyxl:主要针对xlsx格式的excel进行读取和 编辑。
安装:
pip install openpyxl
主要方法:
创建一个工作薄:wb = openpyxl.Workbook()
新增一个sheet表单:wb.create_sheet('test_case')
保存case.xlsx文件:wb.save('cases.xlsx')
打开工作簿:wb = openpyxl.load_workbook('cases.xlsx')
选取表单:sh = wb['test_case']
读取第一行、第一列的数据:ce = sh.cell(row = 1,column = 1)
ce.value
按行读取数据:row_data = list(sh.rows)
row_data[index].value
关闭工作薄:wb.close()
按列读取数据:columns_data = list(sh.columns)
写入数据之前,该文件一定要处于关闭状态
写入第一行、第四列的数据 value = 'result':sh.cell(row = 1,column = 4,value = 'result')
获取最大行总数、最大列总数:sh.max_row、 sh.max_column
del 删除表单的用法:del wb['sheet_name']
remove 删除表单的用法:sh = wb['sheet_name']
wb.remove(sh)