Python基础之——8_持久化存储文件操作

目录

一、文件操作介绍

文件的作用?

文件的打开与关闭

 文件的打开

文件的打开模式

File对象的属性:

File对象的常用方法:

seek函数介绍

文件的关闭

with语句工作原理

项目案例: 文件的备份Demo

二、os模块详解

三、json模块详解

python类型数据和JSON数据格式互相转换规则

序列化及反序列化常用参数 

 自定义复杂数据类型编解码

四、实验操作

4.1 文件的基本操作

4.2 with语句

4.3 os模块

4.4 json模块

4.5 存储为excel文件


一、文件操作介绍

文件的作用?

一个程序在运行过程中用了九牛二虎之力终于计算出了结果,试想一下如果不把这些数据存放起来,相比重启电脑之后,“哭都没地方哭了”。 默认数据是加载到内存中,结果也是保存到内存中, 程序执行结束,所有的数据释放。

 

文件的打开与关闭

宋丹丹拉高音调说:这个得分成三步,第一步打开冰箱;第二步,把大象塞进冰箱里;第三步,把冰箱关上。在操作文件的整体过程与将大象放入冰箱的过程是很相似的。

 文件的打开

python,使用open函数,可以打开一个已经存在的文件,或者创建一个新文件。

open(文件名,访问模式)   e.g. f = open('test.txt', 'w')

如果文件不存在那么创建,如果存在那么就先清空,然后写入数据

文件的打开模式

要读取二进制文件,比如图片、视频等等,用'rb', 'wb', 'ab'等模式打开文件即可.

 

File对象的属性:

File对象的常用方法:

 

seek函数介绍

seek(offset, from)2个参数:  offset:偏移量  from:方向 

  0:表示文件开头;

  1:表示当前位置;

  2:表示文件末尾

1). 把位置设置为:从文件开头,偏移5个字节

2). 把位置设置为:文件最开始

3). 把位置设置为:文件最末尾

 

文件的关闭

方法一: 调用close()方法关闭文件。文件使用完毕后必须关闭,因为文件对象会占用操作系统的资源,

并且操作系统同一时间能打开的文件数量也是有限的;

方法二:  Python引入了with语句来自动帮我们调用close()方法:

 

with语句工作原理

python中的with语句使用于对资源进行访问的场合,保证不管处理过程中是否发生错误或者异常都会自动执行规定的(“清理”)操作,释放被访问的资源,比如有文件读写后自动关闭、线程中锁的自动获取和释放等。

项目案例: 文件的备份Demo

 

二、os模块详解

关于操作系统

os,语义为操作系统,处理操作系统相关的功能,可跨平台。 比如显示当前目录下所有文件/删除某个文件/获取文件大小……

 关于路径

os模块

os 模块中的 rename() 可以完成对文件的重命名操作。

  rename(需要修改的文件名, 新的文件名)

os 模块中的 remove() 可以完成对文件的删除操作

  remove(待删除的文件名)

 

关于文件与目录操作

 

文件批量重命名

       1. 在当前目录新建目录img, 里面包含100个文件, 100个文件名各不相同(X4G5.png)

       2. 将当前img目录所有以.png结尾的后缀名改为.jpg.

 

三、json模块详解

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。

JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括CC++JavaJavaScriptPerlPython)

这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)

python类型数据和JSON数据格式互相转换规则

python str类型到JSON中转为unicode类型,None转为null,dict对应object

pyhton中的集合不能转成json格式。

 

 

序列化及反序列化常用参数 

json.dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True, 
	allow_nan=True, cls=None, indent=None, separators=None, 
	encoding="utf-8", default=None, sort_keys=False, **kw)
ensure_ascii =False: 中文存储需要设定
indent=4: 增加缩进,增强可读性,但缩进空格会使数据变大
separators=(',',':'): 自定义分隔符 , 元素间分隔符为逗号, 字典 key value 值的分隔符为冒号
sort_keys =True: 字典排序

 自定义复杂数据类型编解码

例如我们碰到集合对象, datetime对象,或者自定义的类对象等json默认不支持的数据类型时,我们就需要自定义编解码函数。有两种方法来实现自定义编解码。

四、实验操作

4.1 文件的基本操作

# 1. 打开文件
"""
mode:
    r: 只能读文件
    w: 只能写入(清空文件内容)
    a+: 读写(文件追加写入内容)
"""
f = open('doc/hello.txt',mode='a+')
# 2. 文件读写操作
f.write('java\n')
# 3. 关闭文件
f.close()

4.2 with语句

"""
with语句:
"""
# ****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())         # 读取文件内容


4.3 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')
print(envs)

# 4. 目录名和文件名拼接
# os.path.dirname获取某个文件对应的目录名
# __file__当前文件
# join拼接, 将目录名和文件名拼接起来。
BASE_DIR = os.path.dirname(__file__)
setting_file = os.path.join(BASE_DIR, 'dev.conf')
print(setting_file)

4.4 json模块

import  json

# 1. 将python对象编码成json字符串
users = {'name':'westos', "age":18, 'city':'西安'}
json_str = json.dumps(users)
with open('doc/hello.json', 'w') as f:
    # ensure_ascii=False:中文可以成功存储
    # indent=4: 缩进为4个空格
    json.dump(users, f, ensure_ascii=False, indent=4)
    print("存储成功")
print(json_str, type(json_str))

# 2. 将json字符串解码成python对象
with open('doc/hello.json') as f:
    python_obj = json.load(f)
    print(python_obj, type(python_obj))

4.5 存储为excel文件

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')

"""
如何安装pandas?
> pip install pandas -i https://pypi.douban.com/simple
如何安装对excel操作的模块?
> pip install openpyxl -i https://pypi.douban.com/simple
"""

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值