Python文件基础操作与openpyxl处理Excel实战指南
本文详细介绍Python中文件的基本操作流程,涵盖open()函数的使用、读写模式(r/w/a)的区别、read/write/close等核心方法,以及利用with语句优化资源管理。此外,深入解析openpyxl库,演示如何创建、打开、操作Excel工作簿与工作表,包括单元格赋值、列宽设置及数据追加等实用技巧,帮助开发者高效处理文本与Excel数据。
一、文件的操作流程
首先,需要建立文件对象。
其次,调用文件相关的方法执行具体的读写或修改操作。
最后,务必关闭文件以释放资源。
1、打开文件
Python提供了内置的open()函数用于打开文件并创建file对象,只有创建该对象后,才能调用其相关方法进行后续的读写操作。
f = open(file_name [, access_mode])
file_name:指定要打开的文件名,类型为字符串。
access_mode:指定打开文件的模式,例如只读、写入或追加等。该参数非必填,若未指定,默认访问模式为只读(r)。
# 例子
f = open(r'E:\文件目录\文件的简单操作.py')
f = open('E:\\文件目录\\文件的简单操作.txt')
f = open('E:/文件目录/文件的简单操作.py')
f = open('./文件目录/' + str(file_name), 'w')
print("文件名: ", f.name)
print("是否已关闭 : ", f.closed)
print("访问模式 : ", f.mode)
文件的访问模式如下表所示,其中'r’代表只读,'w’代表覆盖写入,'a’代表追加写入。
| 模式 | 描述 |
|---|---|
| r | 以只读方式打开文件。这是默认模式 |
| rb | 以二进制格式打开文件用于只读。这是默认模式 |
| r+ | 打开文件用于读写 |
| rb+ | 以二进制格式打开文件用于读写 |
| w | 打开文件只用于写入。若文件存在将其覆盖,若不存在创建新文件 |
| wb | 以二进制格式打开文件只用于写入。若文件存在将其覆盖,若不存在创建新文件 |
| w+ | 打开文件用于读写,若文件存在将其覆盖,若不存在创建新文件 |
| wb+ | 以二进制格式打开文件用于读写,若文件存在将其覆盖,若不存在创建新文件 |
| a | 打开文件用于追加。若文件存在新的内容会写入已有内容之后,若不存在创建新文件进行写入 |
| ab | 以二进制格式打开文件用于追加。若文件存在新的内容会写入已有内容之后,若不存在创建新文件进行写入 |
| a+ | 打开文件用于读写。若文件存在,文件打开时会是追加模式,若不存在创建新文件用于读写 |
| ab+ | 以二进制格式打开文件用于追加。若文件存在,文件打开时会是追加模式,若不存在创建新文件用于读写 |
2、文件操作——读、写、修改
(1)读:read()方法
使用read()可以一次性读取整篇文章或文件的全部内容。
# 打开一个文件
f = open("file.txt", "r",encoding='utf8')
f_read = f.read() # 通过read()进行读取
print(f_read)
# 关闭打开的文件
f.close()
若需读取指定数量的字符,可使用read()并传入参数。
read()方法允许指定需要读取的字符数量,无论英文字母还是汉字,在Python中均被视为一个字符进行计数。
f_read = f.read(8) # 读取8个字符
若需逐行读取内容,可使用readline()方法。
readline()用于读取一行代码或文本,当遇到第一个换行符时即停止读取。
f_read = f.readline() # 读取一行内容。
f_read1 = f.readline() # 再读取一行内容。
若希望将文件内容以列表形式输出,可使用readlines()方法。
readlines()会将文件的所有行读取出来,并以列表的形式返回结果。
f_read = f.readlines() # 以列表的形式输出。
(2)写:write()方法
文件操作中的写入功能主要包含两种模式:
w:覆盖写模式。
a:追加写模式。
write()方法可以将任何字符串(包括Python字符串或二进制数据)写入到一个已打开的文件中。需要注意的是,write()方法不会在字符串末尾自动添加换行符(‘\n’)。
覆盖写(w)模式
使用该模式写入文件时,原有内容将被完全覆盖。
# 打开一个文件
f = open('file.txt','w',encoding='utf8')
f_w = f.write('hello world')
print(f_w) # 输出写入多少字符
# 关闭打开的文件
f.close()
追加写(a)模式
使用该模式时,新写入的内容会追加到文件末尾,保留原有内容。
# 打开一个文件
f = open('file.txt','a',encoding='utf8')
f_w = f.write('python pandas request')
print(f_w) # 输出写入多少字符
# 关闭打开的文件
f.close()
此外,还可以直接写入可迭代对象,如字符串、列表、元组或字典等。
seq = ["文件操作教程 1\n", "文件操作教程 2"]
f.writelines(seq)
(3)修改:replace()方法
f1 = open('file.txt','r',encoding='utf8') # 原文件
f2 = open('file2.txt','w',encoding='utf8') # 新文件
for line in f1:
if "hello" in line:
line = line.replace("hello","hi python")
f2.write(line)
# 关闭文件
f1.close()
f2.close()
使用with语句是推荐的文件处理方式。
当with代码块执行完毕后,系统会自动关闭文件并释放内存资源,无需手动调用f.close()。同时,with语句支持同时对多个文件进行操作。
以下是使用with语句重写修改文件内容的示例代码。
with open('file.txt','r',encoding='utf8') as f1,open('file2.txt','w',encoding='utf8') as f2:
for line in f1:
if "hello" in line:
line = line.replace("hello","hi python")
f2.write(line)
3、关闭文件
调用file对象的close()方法可以刷新缓冲区中尚未写入的信息,并正式关闭文件。关闭后,该文件对象将不能再进行写入操作。
# 打开一个文件
f = open("file.txt", "w")
# 关闭打开的文件
f.close()
二、openpyxl操作excel文件
在openpyxl库中,一个Excel文件对应一个Workbook对象,一个Sheet(工作表)对应一个Worksheet对象,而一个单元格对应一个Cell对象。可以通过Workbook()创建空白Excel,使用load_workbook(file_name)加载已存在的Excel文件,最后通过save()保存Workbook对象。
1、导入模块
import openpyxl
2、创建文件
# 创建空白excel
wb = openpyxl.Workbook()
3、打开已有excel文件
# 打开已有的xxx.xlsx文件
wb = openpyxl.load_workbook('./文件目录/' + str(file_name))
4、创建表
sheet0 = wb.create_sheet(title='表1', index=0)
sheet1 = wb.create_sheet(title='表2', index=1)
sheet2 = wb.create_sheet(title='表3', index=2)
sheet3 = wb.create_sheet(title='表4', index=3)
5、操作单元格
# 通过单元格名称设置,指定单元格的值
sheet0["A1"]='当前时间'
sheet0["B1"]="数据类型"
# 通过行列坐标设置,指定单元格的值
d = sheet0.cell(row=1, column=1, value='当前时间')
# 设置单元格宽度
sheet0.column_dimensions['A'].width = 30.0
sheet0.column_dimensions['B'].width = 30.0
6、设置整行数据
time = datetime.datetime.now().strftime('%F %T') # '2022-10-12 20:05:23'
#time1 = time.strftime('%a %b %d %H:%M:%S %p %Y', time.localtime(time.time())) # (星期 月 日 时:分:秒 上午/下午 年)'Wed Sep 07 17:43:25 PM 2022'
#time = datetime.datetime.now().strftime('%F %T').split(':') # ['2022-09-07 17', '42', '56']
#time_str = time[0] + '-' + time[1] + '-' + time[2] # '2022-09-07 17-42-56'
sheet0.append([time, 'int'])
7、保存文件
wb.save('./文件目录/' + str(file_name))到此这篇关于Python文件简单操作及openpyxl操作excel文件详解的文章就介绍到这了,更多相关Python文件操作内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









