python办公自动化笔记

server/2025/3/12 8:35:33/

一、对文件操作

open()

这是python中内置的打开和创建文件的函数。
第一个参数是文件的路径,第二个参数是模式,默认是 “r”,表示读模式。
“w” 表示写模式
“a” 表示追加模式
“b” 模式表示这是二进制文件(如图片、.exe文件等),通常和读、写模式一起使用,如 “rb” ,“wb”

写模式

该模式下,都会把文件清空然后再写。

python">f=open('contacts.txt','w',encoding='utf-8')
f.write('小王 13977188888 \n')
f.write('小玛 15632333333 \n')
f.close()

输出:

在这里插入图片描述

② 读模式

在这里插入图片描述

输出:

在这里插入图片描述

③ 追加模式

在这里插入图片描述

b模式

如复制一张图片这样写:
在这里插入图片描述
结果:
在这里插入图片描述

如果不想每次都手动f.close(),可以使用with关键字,如下:
在这里插入图片描述

二、异常处理

捕捉异常,用固定搭配:

python">try:#有可能发生异常的代码写这里
except Exception: # Exception是所有异常的基类,可以写具体的类如文件不存在写FileNotFoundError。如解码错误写UnicodeDecodeError。# 发生异常后要执行的代码写这里
finally:# 无论发不发生异常都要执行的代码写这里

在这里插入图片描述
finally里面的代码是try里面的代码无论发不发生异常都会被执行。

如果有可能会发生多个异常可以写多个except,如下图:
在这里插入图片描述

还支持把异常打印出来:
在这里插入图片描述

三、CSV文件处理

1、csv文件概念

csv文件其实就是文本文件。

csv文件中,每一列用逗号隔开,每一行用换行符隔开。如在pycharm中打开csv文件如下图:
在这里插入图片描述

如果在excel中打开上面这个csv文件,如下图:

在这里插入图片描述

2、打开csv文件

① 用open()函数打开csv文件

f.readlines()
这个函数作用是把文件里边的每一行读到一个列表里边。

在这里插入图片描述

输出:

在这里插入图片描述

如果一个单元格里边包含一个逗号,则需要用引号引起来:
在这里插入图片描述
在excel打开,效果是这样的:
在这里插入图片描述

② 用csv模块打开csv文件(常用)

现在有example1.csv文件:

在这里插入图片描述

读:

第一种读,使用 csv.reader() 这个阅读器:

python">import csvwith open('./data_files/example1.csv',"r",encoding='utf-8') as f:reader=csv.reader(f)for row in reader:for col in row:print(col,end="\t")print()

输出:

在这里插入图片描述
第二种读,使用 csv.DictReader() 这个阅读器:

python">with open('./data_files/example1.csv',"r",encoding='utf-8') as f:reader=csv.DictReader(f)for row in reader:print(row['订单号'],row['销售额'])

输出:

在这里插入图片描述

写:

现在有sales数组:

python">sales = (("Peter", (78, 70, 65)),("John", (88, 80, 85)),("Tony", (90, 99, 95)),("Henry", (80, 70, 55)),("Mike", (95, 90, 95)),
)

第一种写,用 csv.writer() 这个笔:

python">with open('./data_files/example2.csv','w',newline='') as f: #使用 newline='' 可以确保 csv.writer 统一处理换行符,避免每行之间出现两个换行符的问题。writer=csv.writer(f)writer.writerow(['name','Jan','Feb','Mar'])for name,grades in sales:# writer.writerow([name,grades[0],grades[1],grades[2]])# 或者用*号去解压列表writer.writerow([name,*grades])

结果新建了一个example2.csv文件,里面的内容是:
在这里插入图片描述

第二种写,用 csv.DictWriter() 这个笔:

先把sales转成含有字典的列表:

python">data=[{'name':name,'Jan':grades[0],'Feb':grades[1],'Mar':grades[2]} for name,grades in sales]
import pprint
pprint.pprint(data) # pprint.pprint(data) 美化输出data

输出:
在这里插入图片描述
然后把这个列表写进 example3.csv

python">with open('./data_files/example3.csv','w',newline="") as f:fieldnames=['name','Jan','Feb','Mar']writer=csv.DictWriter(f,fieldnames)writer.writeheader()for row in data:writer.writerow(row)

最后 example3.csv 里面的内容是:
在这里插入图片描述

最后


http://www.ppmy.cn/server/174107.html

相关文章

slf4j和log4j的区别与使用

slf4j和log4j的区别与使用 文章目录 1.简介2.使用教程3.常见报错解决(持续更新) 1.简介 官网:https://www.slf4j.org/manual.html (1)简单日记门面(simple logging Facade for Java)SLF4J是为各种loging APIs提供一个简单统一的接口。 (…

repo访问gerrit.googlesource失败

编译openharmony的时候,repo阶段碰到一个问题,建议不要通过 apt install安装,里面的源来自google curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 -o ~/repo chmod 755 ~/repo 执行类似这样的操作 repo init -u gitgitee.com:…

【清华大学】实用DeepSeek赋能家庭教育 56页PDF文档完整版

清华大学-56页:实用DeepSeek赋能家庭教育.pdf https://pan.baidu.com/s/1BUweVDeG2M8-t0QaIs3LHQ?pwd1234 提取码: 1234 或 https://pan.quark.cn/s/8a9473493bb0 《实用DeepSeek赋能家庭教育》基于清华大学研究成果,系统阐述了DeepSeek人工智能技…

第八章:未来展望 - 第一节 - Tailwind CSS 新特性解析

本节将详细介绍 Tailwind CSS 的最新特性及其实际应用,帮助开发者更好地利用这些新功能。 容器查询(Container Queries) 基础配置 // tailwind.config.js module.exports {theme: {extend: {containers: {sm: 320px,md: 768px,lg: 1024px…

使用 Java 执行 SQL 语句和存储过程

使用 Java 执行 SQL 语句和存储过程,通常有两种主要的方式:使用 JDBC(Java Database Connectivity)或者通过框架如 Spring Data JPA、MyBatis 等。 1. 使用 JDBC 执行 SQL 语句 JDBC 是 Java 操作数据库的标准 API。以下是通过 …

雷池WAF的为什么选择基于Docker

Docker 是一种开源的容器化平台,可以帮助开发人员将应用程序及其所有依赖项打包到一个称为容器的独立、可移植的环境中。Docker 的核心概念包括以下几点: 容器:Docker 使用容器来封装应用程序及其依赖项,使其能够在任何环境中都能…

clickhouse修改和删除数据

标题:ClickHouse中修改和删除数据的简易指南 在大数据时代,数据库技术的发展日新月异。作为一款专为实时分析设计的列式数据库管理系统,ClickHouse因其高效的查询性能而受到欢迎。照这么推测的话,对于那些习惯于传统SQL操作&…

Collections.addAll与List实例对象addAll方法的比较

Collections.addAll() 和 List.addAll() 都是用于将多个元素添加到集合中的方法,但它们在实现和使用上有一些区别。以下是它们的详细对比: 1. Collections.addAll() Collections.addAll() 是 java.util.Collections 类中的一个静态方法,用于…