通常在没有引入模块时只能对txt文件进行处理,如果想要对csv、ini、json、yaml文件进行处理需要引入模块。在此介绍各种文件类型的操作,对于后期的自动化和脚本数据处理有很大的帮助。
csv文件
CSV(Comma-Separated Values)文件是一种常见的文本文件格式,用于存储表格数据,通常由电子表格软件或数据库导出。python自带csv模块
读取 CSV
reader(文件对象, delimiter): 读取csv文件中的内容,并制定csv文件中数据的分割符,返回值为可迭代类型,循环可迭代类型,会获取到csv文件中的每行数据,每行数据的类型为列表
import csv
with open('data.csv', mode='r', encoding='utf-8') as f:
reader = csv.reader(file, delimiter=',') # 指定分隔符
for row in reader:
print(row) # 每行作为列表返回
写入csv
writer(文件对象, delimiter): 向csv文件中写入数据,写之前需要先获取csv文件writer。writer获取到之后,可以使用writerow写入单行数据,也可以使用writerows写入多行数据。
import csv
data = [
['Name', 'Age'],
['tom', 30],
['lily', 25]
]
"""
data=[
("Name", "Age", "City"),
("Alice", 25, "New York"),
("Bob", 30, "Los Angeles")
]
"""
with open('data.csv', mode='w', encoding='utf-8') as f:
writer = csv.writer(file, delimiter=';') # 指定分隔符
writer.writerows(data) # 写入
注意:在windows上使用python写入csv文件时出现空行主要是因为 在 Windows 系统上,文件写入时默认会添加 \r\n(CRLF)换行符,而 Python 的 open() 默认会进行换行符转换,导致多出一个空行。只需要在open()函数内加入newline=""就可以参数即可解决。
json文件
json是用来存储简单的数据结构和对象的文件。json是一种轻量级的数据交换格式,基于ECMAScript(欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据,用于许多Web应用程序来进行数据交换。python自带json模块。json数据在写入时一定要覆盖的写入,因为json数据必须满足json格式。
json的文件格式或数据格式
1.列表方式 [ ]---列表套字典或者列表套列表
[
{ "id" : 1 ,
"name" : "xiaoming" },
{"id" : 2 ,
"name" : "xiaohong" },
["name", "age", "sex"]
]
2.字典方式 { }--字典套字典或者字典套列表
{ "status" : 0 , //执行状态码
"msg" : "SUCCESS", //说明文字信息,没有为NULL
"data" :[
{ //对象中嵌套数组,数组是返回的数据
"id" : 1 ,
"name" : "xiaohong" },
{ "id" : 2,
"name" : "xiaoming" }
]
}
json模块对json数据进行操作
- json.loads(字符串):将json格式的字符串数据序列化(转成)为python对象(字典/列表)
- json.load(文件对象):将文件对象对应的json文件中的数据序列化(转成)为python对象(字典/列表)
- json.dumps(python对象[, ensure_ascii=False]):将python的对象反序列化为json格式的字符串
- json.dump(python对象, 文件对象[, ensure_ascii=False]):将python的对象反序列化为json格式的字符串, 在写入到文件对象中。
- eval()函数,可直接转换为相应的格式,例如"[1,2,3,4]",慎用。
yaml文件
yaml其实也类似于 json、txt ,它们都属于一种文本格式。在我们的实际工作中, yaml 文件经常作为服务期配置文件来使用。 比如一些定义好的内容,并且不会修改的信息,我们就可以通过定义 yaml 文件,然后通过读取这样的文件,将数据导入到我们的服务中进行使用。
yaml文件的格式
- 大小写敏感
- 使用缩进表示层级关系
- 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可,通常开头缩进两个空格
- 不支持Tab键制表符缩进,只使用空格缩进
- 字符后缩进一个空格,如冒号,逗号,短横杆(-)等
- "—“表示
YAML格式,一个文件的开始,用于分隔文件间 - ”#”表示注释 (
yaml文件只有行注释)
yaml支持的数据结构有三种。
- 对象:键值对的集合,又称为字典(dictionary)key: value
- 数组:一组按次序排列的值,又称为 列表(list)- Apple
- 纯量(scalars):单个的、不可再分的值 name: "John"
yaml 中的值有以下基本类型:
- 字符串
- 整形
- 浮点型
- 布尔型
- null
- 时间
- 日期
示例
app:
name: MyApp
version: 1.0
settings:
port: 8080
debug: false
features:
- login
- upload
users:
- &admin
id: 1
role: admin
- <<: *admin
id: 2
name: Backup Admin
yaml文件的操作
在python中要操作yaml文件需要引入第三方模块pyyaml
pip install pyyaml
import yaml
yaml.load(yaml文件的对象, Loader=yaml.FullLoader): 会将yaml文件中的数据序列化为python的对象(字典/列表)
with open("./data1/data.yaml", mode="r", encoding="utf-8") as f:
# res = yaml.load(f, Loader=yaml.FullLoader)
res = yaml.load(f, Loader=yaml.CLoader)
print(res)
ini文件
ini文件是Initialization File的缩写,即初始化文件,是windows的系统配置文件所采用的存储格式。
ini文件的格式:ini文件由节、键、值组成。
[节点/section]
(键=值)
key=value
示例
[Startup]
RequireOS=Windows 7
RequireMSI=3.1
RequireIE=7.0.0000.0
Require64BitVCRT=1
[Windows 7]
PlatformID=2
MajorVersion=6
MinorVersion=1
ini文件操作
python使用的时configparser模块读取ini文件。configparser是第三方的
pip install configparser
configparser读取ini文件的流程:
1:创建Configparser的对象
2:使用Configparser的对象的read方法读取ini
read(ini文件的路径[, encoding="utf-8"]): 读取ini文件,将读取的ini文件内容加载到Configparser的对象中,返回读取成功的ini文件路径
3:使用Configparser的对象的get的方法获取ini的数据。
get("节点名称", "键"): 获取节点下键对应的value,返回值类型为字符串
示例
import configparser
# 创建Configparser对象
conf = configparser.ConfigParser()
# 使用Configparser的对象的read方法读取ini
res = conf.read("./data1/data.ini", encoding="utf-8")
print(res)
# 使用Configparser的对象的get的方法获取ini的数据。
value = conf.get("节点名称", "data")
print([value])
print([conf.get("mysql", "host")])
print([conf.get("mysql", "port")])
print(conf.get("mysql", "user"))
print(conf.get("mysql", "password"))
excel文件
Microsoft Excel 是微软公司开发的电子表格软件,属于 Microsoft Office 套件的一部分,广泛用于数据处理、统计分析、财务建模、可视化等领域。它支持公式计算、图表制作、宏编程(VBA)等功能,适用于个人、企业和学术研究。
excel的格式
excel由工作簿和工作表组成:
- workbook:工作簿,即整个excel文件
- worksheet:工作表,一个excel文件中可以有多个工作表
excel的操作
在python中使用excel需要先引入openpyxl第三方模块
pip install openpyxl
操作excel的流程
openpyxl创建excel:
1:创建工作簿
wb = Workbook()
2:创建工作表
i: 创建新的工作表
ws = wb.create_sheet("工作表的名称"[, number])
ii: 使用自带工作表
ws = wb.active
3:向工作表中写入数据
i: 向指定单元格写入数据
ws["列好行号"] = value
注意:单独的一个才能写入
ii: 向没有数据的新行追加数据
ws.append(有序的可迭代容器)
注意:有序的可迭代容器的元素必须是一个单独的值
4:保存工作簿
wb.save("excel的路径")
openpyxl读取excel:
1:加载工作簿
wb = openpyxl.load_workbook("excel路径")
2:获取工作表
ws = wb["工作表的名称"]
3:读取工作表中的数据
i:获取指定的单元格。工作表["列好行号"]
单元格的操作:
value: 获取单元格的数据. 单元格的数据一般为:数值类型,字符串,None,bool,datetime类型...
row: 获取单元格对应的行号
column:获取单元格的列号
coordinate: 获取单元格的坐标
ii:工作表是可迭代类型的,可以直接对工作表进行for循环,可以得到有数据的行,行的数据类型为元组,元组的元素为有数据的单元格(Cell)。
iii: 可以根据工作表获取有数据的最大列号(max_column)和最大行号(max_row)
4:读取excel数据时,也可以写入数据(按照上面的方式写入数据),写入完之后一定要保存。
with结构
我们都知道打开文件方式使用open()函数,再对文件操作完成后需要调用close()方法来关闭文件。实际上Python提供了with语句来管理资源关闭,比如可以把打开的文件放在with语句中,这样with语句可以帮我们自动关闭文件。
with open("文件路径", mode="模式") as fp:
代码块 # 无论中间代码执行是否错误,最后都会关闭文件
with实现的原理要涉及到另外一个概念,就是上下文管理器(Context Manager)。所谓上下文管理器,就是实现了__enter__()和__exit__()方法的对象。上下文管理器对象可以使用with关键字。

Comments NOTHING