python持久化存储文件操作

存储文件的重要

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

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

mode

r:只能读文件
w:只能写入(清空文件内容)
a+:读写(追加)

打开文件:

f = open(‘doc/hello.txt’,mode=‘a’)

文件的读写操作

f.write(’\nhello python’)

文件的关闭

f.close()

eg:

f = open('C:/Users/Shinelon/PycharmProjects/pythonProject1/python/westos',mode='a+')
f.write('\nxinxiedeo') #在最下面追加

指针的概念

对于指针:seek(offset, from)有2个参数: offset:偏移量 from:方向
0:表示文件开头;
1:表示当前位置;
2:表示文件末尾

文件的关闭

方法一: 调用close()方法关闭文件。文件使用完毕后必须关闭,因为文件对象会占用操作系统的资源,
并且操作系统同一时间能打开的文件数量也是有限的:

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

with open('/root/PycharmProjects/pythonProject1/4/test.txt','w+') as f:
    f.write('hello world\n')
    f.seek(0,0)   #移动指针位置到文件最开始
    print("当前指针位置为:",f.tell())
    print(f.read())   #读取文件内容

输出为
当前指针位置为:0
hello world

若是修改指针位置

with open('/root/PycharmProjects/pythonProject1/4/test.txt','w+') as f:
    f.write('hello world\n')
    f.seek(0,2)  #移动指针位置到文件末尾
    print("当前指针位置为:",f.tell())
    print(f.read())   #读取文件内容

输出为当前指针位置为:12

OS模块

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

获取操作系统的类型

import os #Linux操作系统
import platform #windows操作系统
print(os.name)
# 获取主机信息,windows系统使用platform模块,如果是linux系统直接使用os模块

结果为
posix

我们需要完善代码:
不确定是windows系统,还是linux操作系统所以会用到

try:可能报错的执行内容
excpt:可能异常的执行内容
finally:都会执行的内容

import os
import platform
try:
	uname = os.uname()
except :
	uname = platform.uname()
finally:
	print(uname)

获得系统的环境变量

import os

envs  = os.environ
print(envs)

文件的路径问题也很重要
先判断是不是就 对的路径

import os
print(os.path.isabs('/root/PycharmProjects/pythonProject1/4/test.txt'))
print(os.path.isabs('test.txt'))

结果如下:

True
False

生成绝对路径:

import os
print(os.path.abspath('/root/PycharmProjects/pythonProject1/4/test.txt'))
print(os.path.abspath('test.txt'))

目录名和文件名的拼接

#os.path.dirname获取某个文件对应的目录名
#__file__是指当前文件
#join 拼接,将目录和文件名拼接起来

import os
BASE_DIR = os.path.dirname(__file__)
setting_file = os.path.join(BASE_DIR,'dev.conf')
print(setting_file)

获取目录名或者文件名

import os
filename = 'D:/root/westos/test.txt'
print(os.path.basename(filename)) #输出文件名
print(os.path.dirname(filename)) #输出文件所在目录

介绍文件的创建和删除

os模块中的rename()可以完成对文件的重命名操作。
rename(需要修改的文件名, 新的文件名)

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

import os
os.makedirs('/home/kiosk/PycharmProjects/pythonProject/6/westos/ss')  #递归创建目录
os.mkdir('/home/kiosk/PycharmProjects/pythonProject/6/lcf')   #创建单个目录

接着删除目录和文件
执行remdir删除目录

os.rmdir('/home/kiosk/PycharmProjects/pythonProject/6/lcf')

删除递归目录

os.removedirs('/home/kiosk/PycharmProjects/pythonProject/6/westos')

创建文件和删除文件
创建文件

os.mknod('/home/kiosk/PycharmProjects/pythonProject/6/ok.txt')

删除文件

os.remove'/home/kiosk/PycharmProjects/pythonProject/6/ok.txt')

修改文件名

os.rename('/home/kiosk/PycharmProjects/pythonProject/6/ok.txt','/home/kiosk/PycharmProjects/pythonProject/6/westos.txt')

判断文件或者目录是否存在

分离后缀名和文件名
将目录名和文件名分离

import os
print(os.path.exists('.txt'))
print(os.path.splitext('t'))
print(os.path.split('westos.txt'))
print(os.path.split('/home/kiosk/PycharmProjects/pythonProject/6/westos.txt'))

json模块详细解释

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

JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、Java、JavaScript、Perl、Python等)。

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

那么python和JSON数据转化的规则

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

1. 先来介绍python编码为json字符串

import json
users = {'name':'westos','age':20,'obj':'linux'}
json_str = json.dumps(users)
print(users,type(users))
print(json_str,type(json_str))

结果如下:
在这里插入图片描述

再把python转为的json字符串输出到文件中

import json
users = {'name':'westos','age':20,'obj':'linux'}
json_str = json.dumps(users)
with open('/home/kiosk/PycharmProjects/pythonProject/7/t.json','w') as f:
    json.dump(users,f,ensure_ascii=False,indent=4)
    print('shuchu success!!')
print(users,type(users))
print(json_str,type(json_str))

2. json字符串解码成python对象

import json
with open('/home/kiosk/PycharmProjects/pythonProject/7/t.json') as f:
    python_obj = json.load(f)
    print(python_obj,type(python_obj))

pandas模块

首先需要打开terminal安装模块
选择豆瓣源的路径下载快

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':'server1', 'idc':'baidu'},
    {'host':'1.1.1.2', 'hostname':'server2', 'idc':'huawei'},
    {'host':'1.1.1.3', 'hostname':'server3', 'idc':'tengxun'},
    {'host':'1.1.1.4', 'hostname':'server4', 'idc':'wangyi'},
]
df = pandas.DataFrame(hosts)
print(df)
df.to_excel('/home/kiosk/PycharmProjects/pythonProject/7/test.xlsx')

练习

统计词频
在这里插入图片描述

import pandas
with open('/home/kiosk/PycharmProjects/pythonProject/7/song.txt') as f: content=f.read()
words = content.split()
result = {}
for i in words:
    if i not in result: result[i] =1
    else: result[i] +=1
import pprint
pprint.pprint(result)

文件内容如下:

hello westos hello linux hello baidu baidu

输出的结果为:

{'baidu' : 2, 'hello' : 3, 'linux' : 1, 'westos' : 1}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lll_cf

喜欢

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值