您现在的位置是:首页 > 编程语言学习 > 前端编程语言 > 文章正文 前端编程语言

Python文件简单操作及openpyxl操作excel文件详解

2022-10-14 09:59:54 前端编程语言

简介这篇文章主要为大家详细介绍了python对文件的简单使用及openpyxl操作excel文件的方法,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一...

这篇文章主要为大家详细介绍了python对文件的简单使用及openpyxl操作excel文件的方法,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下!

一、文件的操作流程

第一,建立文件对象。

第二,调用文件方法进行操作。

第三,关闭文件。

1、打开文件

用python内置的open()函数打开一个文件,创建一个file对象,相关的方法才可以调用它进行读写。

  1. f = open(file_name [, access_mode]) 

file_name:文件名,字符串值

access_mode:打开文件的模式,如只读,写入,追加等,这个参数是非强制的,默认文件访问模式为只读r。

  1. # 例子 
  2. f = open(r'E:\文件目录\文件的简单操作.py'
  3. f = open('E:\\文件目录\\文件的简单操作.txt'
  4. f = open('E:/文件目录/文件的简单操作.py'
  5.  
  6. f = open('./文件目录/' + str(file_name), 'w'
  7. print("文件名: ", f.name) 
  8. print("是否已关闭 : ", f.closed) 
  9. print("访问模式 : ", f.mode) 

文件的访问模式如下表所示,'r’读,'w’覆盖写,'a’追加写。

模式 描述
r 以只读方式打开文件。这是默认模式
rb 以二进制格式打开文件用于只读。这是默认模式
r+ 打开文件用于读写
rb+ 以二进制格式打开文件用于读写
w 打开文件只用于写入。若文件存在将其覆盖,若不存在创建新文件
wb 以二进制格式打开文件只用于写入。若文件存在将其覆盖,若不存在创建新文件
w+ 打开文件用于读写,若文件存在将其覆盖,若不存在创建新文件
wb+ 以二进制格式打开文件用于读写,若文件存在将其覆盖,若不存在创建新文件
a 打开文件用于追加。若文件存在新的内容会写入已有内容之后,若不存在创建新文件进行写入
ab 以二进制格式打开文件用于追加。若文件存在新的内容会写入已有内容之后,若不存在创建新文件进行写入
a+ 打开文件用于读写。若文件存在,文件打开时会是追加模式,若不存在创建新文件用于读写
ab+ 以二进制格式打开文件用于追加。若文件存在,文件打开时会是追加模式,若不存在创建新文件用于读写

2、文件操作——读、写、修改

(1)读:read()

读取整篇文章内容

  1. # 打开一个文件 
  2. f = open("file.txt""r",encoding='utf8'
  3. f_read = f.read()  # 通过read()进行读取 
  4. print(f_read) 
  5.   
  6. # 关闭打开的文件 
  7. f.close() 

读取指定数量的字符

read()方法指定需要读取的字符数量,无论一个英文字母还是一个汉字都是一个字符。

  1. f_read = f.read(8)  # 读取8个字符 

读取一行内容

readline读取一行代码,读取到第一个换行符就停止。

  1. f_read = f.readline()  # 读取一行内容。 
  2. f_read1 = f.readline() # 再读取一行内容。 

把内容以列表的形式输出

readlines会把内容以列表的形式输出。

  1. f_read = f.readlines()  # 以列表的形式输出。 

(2)写:write()

文件操作中的写有两种:

w:覆盖写

a:追加写

write()方法可将任何字符串(Python字符串也可以是二进制数据)写入一个打开的文件。write()方法不会在字符串的结尾添加换行符(‘\n’)。

覆盖写(w)

对文件的内容进行覆盖写入

  1. # 打开一个文件 
  2. f = open('file.txt','w',encoding='utf8'
  3. f_w = f.write('hello world'
  4. print(f_w)  # 输出写入多少字符 
  5.   
  6. # 关闭打开的文件 
  7. f.close() 

追加写(a)

在文件末尾进行文件的追加写入

  1. # 打开一个文件 
  2. f = open('file.txt','a',encoding='utf8'
  3. f_w = f.write('python pandas request'
  4. print(f_w)  # 输出写入多少字符 
  5.   
  6. # 关闭打开的文件 
  7. f.close() 

写入可迭代对象(字符串、列表、元祖、字典)

  1. seq = ["文件操作教程 1\n""文件操作教程 2"
  2. f.writelines(seq) 

(3)修改:replace()

  1. f1 = open('file.txt','r',encoding='utf8')   # 原文件 
  2. f2 = open('file2.txt','w',encoding='utf8')  # 新文件 
  3. for line in f1:  
  4. if "hello" in line: 
  5. line = line.replace("hello","hi python"
  6. f2.write(line) 
  7.   
  8. # 关闭文件 
  9. f1.close() 
  10. f2.close() 

with语句

当with代码块执行完毕时,会自动关闭文件释放内存资源,不用特意加f.close(),而且可以同时对多个文件同时操作。

用with语句重写修改文件中的代码:

  1. with open('file.txt','r',encoding='utf8') as f1,open('file2.txt','w',encoding='utf8') as f2: 
  2. for line in f1:   
  3. if "hello" in line: 
  4. line = line.replace("hello","hi python"
  5. f2.write(line) 

3、关闭文件

file对象的 close()方法刷新缓冲区里任何还没写入的信息,并关闭文件,这之后便不能再进行写入。

  1. # 打开一个文件 
  2. f = open("file.txt""w"
  3.   
  4. # 关闭打开的文件 
  5. f.close() 

二、openpyxl操作excel文件

在openpyxl里面,一个Excel文件对应着一个Workbook对象, 一个Sheet对应着一个Worksheet对象,而一个单元格对应着一个Cell对象。Workbook()创建空白excel,load_workbook(file_name)加载已存在的excel,save()保存Workbook对象。

1、导入模块

  1. import openpyxl 

2、创建文件

  1. # 创建空白excel 
  2. wb = openpyxl.Workbook() 

3、打开已有excel文件

  1. # 打开已有的xxx.xlsx文件 
  2. wb = openpyxl.load_workbook('./文件目录/' + str(file_name)) 

4、创建表

  1. sheet0 = wb.create_sheet(title='表1', index=0) 
  2. sheet1 = wb.create_sheet(title='表2', index=1) 
  3. sheet2 = wb.create_sheet(title='表3', index=2) 
  4. sheet3 = wb.create_sheet(title='表4', index=3) 

5、操作单元格

  1. # 通过单元格名称设置,指定单元格的值 
  2. sheet0["A1"]='当前时间' 
  3. sheet0["B1"]="数据类型" 
  4.  
  5. # 通过行列坐标设置,指定单元格的值 
  6. d = sheet0.cell(row=1, column=1, value='当前时间'
  7.  
  8. # 设置单元格宽度 
  9. sheet0.column_dimensions['A'].width = 30.0 
  10. sheet0.column_dimensions['B'].width = 30.0 

6、设置整行数据

  1. time = datetime.datetime.now().strftime('%F %T')# '2022-10-12 20:05:23' 
  2. #time1 = time.strftime('%a %b %d %H:%M:%S %p %Y', time.localtime(time.time()))  # (星期 月 日 时:分:秒 上午/下午 年)'Wed Sep 07 17:43:25 PM 2022' 
  3. #time = datetime.datetime.now().strftime('%F %T').split(':')# ['2022-09-07 17', '42', '56'] 
  4. #time_str = time[0] + '-' + time[1] + '-' + time[2] # '2022-09-07 17-42-56' 
  5. sheet0.append([time, 'int']) 

7、保存文件

  1. wb.save('./文件目录/' + str(file_name)) 

 

站点信息