记录2023.11.7学习
文件操作
文件
计算机处理信息,需要长久保存,使用文件来进行处理。
按照内部数据的组织形式,分为:文本文件和二进制文件两类。
文件分类
文本文件
若干行以编码存储的字符组成。通常每行以换行符结尾。
二进制文件
除了文本文件之外的文件都称为二进制文件。以字节串形式存储,打开二进制文件要用相关软件来进行解码后才能读取。
文件常用操作
文件打开open()
变量名 = open(r'文件名','打开模式')
f = open(r'filename.txt','r')
文件打开模式
值 | 描述 |
r | 只读模式(文件指针指向文件头,不存在抛出异常 ) |
w | 写模式,文件指针指向文件头,若文件已存在,则覆盖写入,若不存在,则创建 |
a | 追加模式,文件指针指向文件尾,在文件尾部写入数据,不覆盖文件原有内容 |
+ | 读/写模式,与r/w/a/x一同使用,在原有功能基础上增加同时读/写功能 |
b | 二进制模式,可与其他模式组合使用(rb,wb,ab) |
文件关闭
注意:使用open打开文件的话为了安全起见使用完文件后要关闭文件
文件变量名.close()
文件的读/写
读取 | |
read() | 一次读取完文件所有内容,返回字符串 |
read(szie) | 从文件中读取size个字节(python2)或字符(python3) |
readline() | 读取一行内容,返回 |
readlines() | 将文件每一行作为字符串作为元素存入列表中,返回列表 |
seek(offset) | 将文件指针移到指定位置,offset值:0文件开头,1当前位置,2文件结尾 |
写入 | |
write(test) | 将test写入文件,test为字符串 |
wirtelinues(test) | 将元素全为字符串的列表写入文件,不添加换行符 |
f = open('filename.txt','w')
f.write('hellofile')
f.close()
f = open('filename.txt','r')
file5 = f.read(5) # hello
filenext = f.read() # file
f.close()
with
无论如何都确保文件被正常关闭的语句with
with open('文件名.txt','r') as file:
for i in file.readlines():
# 原来可以直接在for循环的时候就使用readlines方法,
# 不用单独赋值一个变量
print(i)
openpyxl库操作
openpyxl是一个读/写excel2010的库,主要处理xlsx的文档,能同时读取和修改excel文档。
创建excel文件
导入Workbook类,创建对象
from openpyxl import Workbook
wb = Workbook()
# 返回第一张表
ws = wb.worksheets[0]
属性 | 描述 |
active | 获取当前获取的worksheet |
worksheets | 以列表的形式返回所有的worksheet(表格) |
read_only | 判断是否已read_only模式打开excel文档 |
sheetnames | 获取工作簿中的表(列表)的名称 |
添加数据
row = [数据,字符串]
ws.append(row)
保存文件
wb.save(r"路径名+文件名+后缀名")
读取excel文件
导入load_workbook类
from openpyxl import load_workbook
wb = load_workbook(r"路径+文件名+后缀名")
ws = wb.worksheet[0]
获取单元格内容
a1 = ws['A1'].value
单元格赋值
# 直接赋值
ws['A1'] = 10
# 使用cell()函数赋值
ws.cell(row=2,column=1,value=20)
# 第二行,第一列,值为20
获取行和列
# 获取有效的数据行数和列数
ws.max_row
ws.max_column
遍历所有单元格
# 双重循环遍历打印所有单元格的值
for r in range(ws.max_row):
for c in range(ws.max_column):
print(ws.cell(row=r+1,column=c+1).value)
os库操作
os库提供文件与文件夹操作方法
listdir()方法
用于返回指定的文件夹包含的文件或文件夹的名字的列表,列表元素为字符串
# 列出指定路径下的所有文件和文件夹
import os
path = r"路径"
filelist = os.listdir(path)
for file in filelist:
print(file)
# 列出当前路径下的所有文件和文件夹
import os
filelist = os.listdir(".")
for file in filelist:
print(file)