Python学习笔记--8.Python持久化存储文件操作、os模块、json模块、异常处理(基础部分笔记补充)
前言
如果我们运行一个程序的结果如果不加操作的话,默认数据是加载到内存中,程序结束、所有数据释放。
试想一个程序在经历九牛二虎之力计算出了结果却不能把结果存放起来,显然是不可取的。
这时候我们可以选择把程序存放到文件当中。
一、文件操作
将数据存放到文件当中主要分为三部分:一把文件打开;二把数据放进去;三关闭文件。
python中打开我呢见使用open函数,
注:此时若文件不存在则自动创建、若文件存在则覆盖原文件,然后写入数据。
f = open('hello.txt', 'w') # 'w' 表示打开写权限,默认只读
f.write('hello westos')
f.close()
注意:文件操作完成后必须关闭文件!!否则会占用内存。
file对象的常用方法:
查看文件操作
f = open('hello.txt')
print(f.readlines())
f.close()
with open用法会将我们打开操作后的函数自动关闭,
with open('hello.txt', 'w') as f:
f.write('linux')
文件的打开方式:
要读取二进制文件,比如图片、视频等等,用’rb’, ‘wb’, 'ab’等模式打开文件即可。
二、os模块
os模块可跨平台处理操作系统相关的功能。诸如查看系统相关信息等。
print(os.environ) #查看系统环境变量
print(os.environ.get('PATH')) # 通过key值获取环境变量对应的value值
获取当前文件的绝对路径目录名
import os
basedir = os.path.dirname(__file__)
print(basedir)
获取当前文件的绝对路径目录名+文件名
basedir = os.path.dirname(__file__)
setting_name = os.path.join(basedir, 'config.conf')
print(setting_name)
filename = '/Users/84052/PycharmProjects/pythonProject2/Day03/config.conf'
print(os.path.basename(filename))
print(os.path.dirname(filename))
绝对路径+后缀名+文件名
filename = '/Users/84052/PycharmProjects/pythonProject2/Day03/config.conf'
print(os.path.splitext(filename)) # 将文件后缀名与绝对路径分开
print(os.path.split(filename)) # 将文件名与绝对路径分开
三、json模块
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。
JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、Java、JavaScript、Perl、Python等)。
这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。
python类型数据和JSON数据格式互换规则
注意:python中的集合不能转成json格式。
python转为json:
json.dumps() 转换格式时使用
json.dump() 写入文件时使用
users = {'name':'westos', 'age':18, 'city':"xi'an"}
json_str = json.dumps(users)
print(json_str)
将python转为json并导入文件
import json
users = {'name':'westos', 'age':18, 'city':"xi'an"}
json_str = json.dumps(users) # 将python字典转为json格式
print(json_str)
with open('hello.json', 'w') as f:
json.dump(users, f, indent=4) #将users写入文件f:hello.json 缩进=4
print('success')
将json转为python
loads 转换格式时使用
load 导入文件时使用
四、异常处理机制
什么是异常
Error(错误)是系统中的错误,程序员是不能改变的和处理的,如系统崩溃,内存空间不足,方法调用栈溢等。遇到这样的错误,建议让程序终止。
Exception(异常)表示程序可以处理的异常,可以捕获且可能恢复。遇到这类异常,应该尽可能处理异常,使程序恢复运行,而不应该随意终止异常。
常见异常:
IndentationError: 缩进错误
KeyboardInterrupt: Ctrl+C被按下
UnboundLocalError : 有同名的全局变量
异常处理机制
Python 的异常机制主要依赖 try 、except 、else、finally 和 raise 五个关键字。
try 关键字后缩进的代码块简称 try 块,它里面放置的是可能引发异常的代码;
except 关键字对应异常类型和处理该异常的代码块;
多个 except 块之后可以放一个 else 块,表明程序不出现异常时还要执行 else 块;
finally 块用于回收在 try 块里打开的物理资源,异常机制会保证 finally 块总被执行;
raise 用于引发一个实际的异常**,raise 可以单独作为语句使用,引发一个具体的异常对象**。
简单结构展示:
import os
import platform
try:
uname = os.uname()
except Exception: #except后可选择异常种类,这里时表示全部异常
uname = platform.uname()
finally: #总是执行的操作
print(uname)
触发异常
Python 允许程序自行引发异常,自行引发异常使用 raise 语句来完成。
raise [Exception [, args [, traceback]]]
raise语句中 Exception 是异常的类型(例如,NameError)参数标准异常中任一种,
args 是自已提供的异常参数。
笔记补充
将python导到.xlsx格式
terminal ---->
pip install pandas
pip install openpyxl
import pandas
hosts =[
{'id':1, 'ip':'172.25.0.1', 'name':'server1'},
{'id':2, 'ip':'172.25.0.2', 'name':'server2'},
{'id':3, 'ip':'172.25.0.3', 'name':'server3'},
{'id':4, 'ip':'172.25.0.4', 'name':'server4'},
]
df = pandas.DataFrame(hosts) #使用pandas模块将字典转为DataFrame格式
print(df)
df.to_excel('hosts.xlsx') #导出格式为xlsx
print('success')
运行结果: