一.文件操作
默认数据是加载到内存中,结果也是保存到内存中, 程序执行结束,所有的数据释放,因此需要保存到文件,存储到硬盘上
(一)文件的打开
# 1. 打开文件
"""
mode:
r: 只能读文件
w: 只能写入(清空文件内容)
a+: 读写(文件追加写入内容)
"""
f = open('doc/hello.txt',mode='a+') #.txt相对路径
# 2. 文件读写操作
f.write('java\n')
# 3. 关闭文件
f.close()
(二)文件的读写
指针定位
seek(offset, from)有2个参数: offset:偏移量 from:方向
0:表示文件开头;
1:表示当前位置;
2:表示文件末尾
(三)文件的关闭
方法一: 调用close()方法关闭文件。文件使用完毕后必须关闭,因为文件对象会占用操作系统的资源,并且操作系统同一时间能打开的文件数量也是有限的
方法二: Python引入了with语句来自动帮我们调用close()方法
"""
with语句工作原理
python中的with语句使用于对资源进行访问的场合,保证不管处理过程中是否发生错误或者异常都会自动执行规定的(“清理”)操作,释放被访问的资源,比如有文件读写后自动关闭、线程中锁的自动获取和释放等
"""
with open('doc/test.txt', 'w+') as f:
f.write('hello world\n') # 写入文件
f.seek(0, 0) # ****: 移动指针到文件最开始
print("当前指针的位置:", f.tell())
f.seek(0, 2) # 移动指针到文件末尾
print("当前指针的位置:", f.tell())
print(f.read()) # 读取文件内容
二.os模块
os,语义为操作系统,处理操作系统相关的功能,可跨平台。 比如显示当前目录下所有文件/删除某个文件/获取文件大小等
import os
import platform
# (一)关于操作系统
# 1. 获取操作系统类型
print(os.name)
# 2. 获取主机信息,windows系统使用platform模块, 如果是Linux系统使用os模块
"""
try: 可能出现报错的代码
excpt: 如果出现异常,执行的内容
finally:是否有异常,都会执行的内容
"""
try:
uname = os.uname()
except Exception:
uname = platform.uname()
finally:
print(uname)
# 3.获取系统的环境变量
envs = os.environ
# os.environ.get('PASSWORD') 通过key值获取环境变量对应的value值
print(envs)
# (二)关于路径
# 1.判断是否为绝对路径
print(os.path.isabs('/pythonProject/练习/doc/hello.txt')) #True
print(os.path.isabs('hello.txt')) #False
# 2.生成绝对路径
print(os.path.abspath('test3.py')) #E:\pythonProject\练习\test3.py
# 3.返回一个绝对路径;join拼接, 将目录名和文件名拼接起来
print(os.path.join('/pythonProject/练习','test3.py')) #/pythonProject/练习\test3.py
print(os.path.join(os.path.abspath('.'),'test3.py')) #E:\pythonProject\练习\test3.py
# __file__和 . 都表示当前文件
# 4. 目录名和文件名
# os.path.basename()获取文件名
# os.path.dirname获取某个文件对应的目录名
# (三)关于文件与目录操作
# 5.创建/删除目录
os.makedirs('dir1/file1')
os.mkdir('dir2')
os.rmdir('dir1/file1')
# 6.创建/删除文件
os.mknod('test1.txt')
os.remove('ceshi')
# 7.文件重命名
os.rename('test1.py','test11.py')
# 8.判断文件或目录是否存在
print(os.path.exists('test3.py')) #True
# 9.分离后缀名和文件名
print(os.path.splitext('test3.py')) #('test3', '.py')
print(os.path.split('test3.py')) #('', 'test3.py')
# 10.将目录和文件名分离
print(os.path.split('/pythonProject/练习/test3.py')) #('/pythonProject/练习', 'test3.py')
三.json模块详解
(一)JSON
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。
JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、Java、JavaScript、Perl、Python等)。
这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。
(二)python类型数据和JSON数据格式互相转换规则:
pyhton中的集合不能转成json格式
import json
# 1. 将python对象编码成json字符串
users = {'name':'user1', "age":18, 'city':'西安'}
json_str = json.dumps(users)
with open('doc/hello.json', 'w') as f:
# ensure_ascii=False:中文可以成功存储
# indent=4: 缩进为4个空格,增强可读性,但缩进空格会使数据变大
# sort_keys=True:字典排序(abcdef)
# separators=('/','-'):自定义分隔符,元素间分隔符为/, 字典key和value值的分隔符为-
json.dump(users, f, sort_keys=True,ensure_ascii=False, indent=4,separators=('/','-'))
print("存储成功")
print(json_str, type(json_str)) #{"name": "user1", "age": 18, "city": "\u897f\u5b89"} <class 'str'>
# 2. 将json字符串解码成python对象
with open('doc/hello.json') as f:
python_obj = json.load(f)
print(python_obj, type(python_obj)) #{'age': 18, 'city': '西安', 'name': 'user1'} <class 'dict'>
四.pandas
"""
如何安装pandas?
> pip install pandas -i https://pypi.douban.com/simple
如何安装对excel操作的模块?
> pip install openpyxl -i https://pypi.douban.com/simple
"""
import pandas
hosts = [
{'host':'1.1.1.1', 'hostname':'test1', 'idc':'ali'},
{'host':'1.1.1.2', 'hostname':'test2', 'idc':'ali'},
{'host':'1.1.1.3', 'hostname':'test3', 'idc':'huawei'},
{'host':'1.1.1.4', 'hostname':'test4', 'idc':'ali'}
]
# 1. 转换数据类型
df = pandas.DataFrame(hosts) #二维表格
# print(df)
# 2. 存储到excel文件中
df.to_excel('doc/hosts.xlsx')
print('success')
2.