Python持久化存储文件操作方法

存储文件的重要

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

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

mode:

r:只能读文件

w:只能写入(清空文件内容)

a+:读写(追加)

打开文件:

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

文件的读写操作

f.write(’\nhello python’)

文件的关闭

f.close()

f = open('C:/Users/Shinelon/PycharmProjects/pythonProject1/python/westos',mode='a+')
f.write('\nxinxiedeo')

结果如下:

本来文件westos里面内容如下:

30974F75-E8AF-AD2A-392F-A63B70DD9DB8.png

执行命令之后:就添加进去了

7AEF501B-6BE1-CE0D-C8A8-7FB31F3955EC.png

BA621D72-3492-B64E-BF10-213C583BA389.png

指针的概念

对于指针: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())   #读取文件内容

执行和结果如下:

2B63E225-4DBC-DD39-C284-CFB861EFF1F3.png

若是修改指针位置:

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())   #读取文件内容

那么输出如下:

0ECA7B1F-BE25-95AA-C040-528E9A76B292.png

OS模块

功能:

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

获取操作系统的类型

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

结果如下:

9E5C7707-7FAD-23A7-8217-8E3338322974.png

我们需要完善代码:

不确定是windows系统,还是linux操作系统!!

用到

try:可能报错的执行内容!

excpt:可能异常的执行内容!

finally:都会执行的内容!

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

结果如下:

CC3B68FD-9F7D-2C1F-EA09-FED850FF9DEE.png

获得系统的环境变量!

import os

envs  = os.environ
print(envs)

结果如下:

C577E442-AE4F-CB8D-4F30-ED3A72BD03B6.png

文件的路径问题也很重要:

先判断是不是就对的路径

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

结果如下:

078099E0-A28E-3CD1-91E3-4BB73CE80484.png

生成绝对路径:

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

结果如下:

E12D23ED-424A-1EBB-7B65-4A83BFF8089E.png

目录名和文件名的拼接

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

结果如下:

C30C7051-D963-1243-6FE5-060DA876A096.png

获取目录名或者文件名

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

结果如下:

D131518F-43AB-4B74-C420-58F5D11F3F19.png

介绍文件的创建和删除

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

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

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

remove(待删除的文件名)

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

结果如下:

创建目录成功!!

5FF59CA2-C8F0-E313-96F6-287D53D9D628.png

接着删除目录和文件!

执行remdir删除目录

34DD539E-7699-FEF5-1770-6D909FEE53EC.png

删除递归目录!

15A716FE-FF62-AFC5-E35B-E7640FDD0331.png

创建文件和删除文件!

创建文件!

437ED8C2-E802-F9E8-1A07-E123DB91DB54.png

删除文件!

1FE64E18-4458-0F0D-854C-06ED2393A9E2.png

修改文件名

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

结果如下:

7E537112-C472-8778-881E-693D1DC6DADC.png

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

分离后缀名和文件名

将目录名和文件名分离

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

结果如下:

08DEAE2C-1FDD-4843-A0A9-86A5A59F45E9.png

收藏 (0)
评论列表
正在载入评论列表...
我是有底线的