10_Python 持久化存储文件操作

一、文件操作介绍

文件:
计算机的数据存储在硬盘上
文件的作用:

1、文件的打开:

在python中,使用open函数,可以打开一个已经存在的文件,或者创建一个新的文件。
open(文件名,访问模式)
eg:f = open(‘test.txt’,‘w’)
如果文件不存在那么创建,如果存在那么就先清空,然后写入数据
在这里插入图片描述
要读取二进制文件,比如图片、视频等等,用‘rb’,‘wb’,‘ab‘ 等模式打开文件即可

 ========= ===============================================================
    Character Meaning
    --------- ---------------------------------------------------------------
    'r'       open for reading (default)
    'w'       open for writing, truncating the file first(1).文件不存在则创建文件; 2).文件存在, 清空文件内容)
    'x'       create a new file and open it for writing
    'a'       open for writing, appending to the end of the file if it exists(1).文件不存在则创建文件; 2).文件存在, 不会清空文件内容)
    'b'       binary mode
    't'       text mode (default)
    '+'       open a disk file for updating (reading and writing)
    'U'       universal newline mode (deprecated)
    ========= ===============================================================


        是否有读权限?    是否有写权限?     文件不存在,是否会创建文件?        文件操作会清空文件内容么?
r           yes         no                  no                              no
w           no          yes                 yes                             yes
a           no          yes                 yes                             no
w+          yes         yes                 yes                             yes
a+          yes         yes                 yes                             no
r+          yes         yes                 no                              no


f = open('txt/hello','a+')
print(f.mode)
##此时读取不到文件内容是因为文件索引在文件最后,后面什么也没有
print(f.read())

f.seek(0,0)
print(f.read())
f.write('hahahaha')  ##在文件里写入
f.close()  ##关闭文件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、Flie对象的属性:
属性描述
file.closed返回Ture如果文件已被关闭,否则返回False
file.mode返回被打开文件的访问模式
file.name返回文件的名称
file.softspace如果用print输出后,必须跟一个空格符,则返回False,否则返回Ture
3、File对象的常用方法:
seek(offset,from)有2个参数:
	offest:偏移量
	from:方向  0:表示文件开头;1:表示当前位置;2:表示文件末尾
filename = 'img/passwd'
f = open(filename,'a+')
#***********文件操作***************
#移动指针操作
"""
seek(offset,from)有2个参数
    offset:偏移量
    from:方向  0:表示文件开头 ;
               1:表示当前位置;
               2:表示文件末尾
"""
f.seek(0,0)

#读文件
"""
读取文件(<1G时)
def read(self , n :int=-1)  #默认读取到文件末尾,返回一个字符串
"""
content = f.read()
print(content)
"""
读取大文件时:
            readline():每次读取一行
            readlins():每次读取多行
"""
print("用死循环通过readline读取文件".center(50,'*'))
f.seek(0,0)
while True:
    content = f.readline()
    if not content:
        break
    else:
        print(content,end='')

f.seek(0,0)
Content = f.readlines()
print(Content)

#写操作
f.write("写入文件内容:BYLL")
f.writelines(['第一个\n','第二个\n'])

#定位 --指针
print(f.tell())
f.seek(0,0)
print(f.tell())
# f.seek(-3,2)
# print(f.tell())

#关闭文件对象
f.close()

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4、文件的关闭

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

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

5、with语句的工作原理

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

"""
with语句工作原理:
        python中的with语句使用于对资源进行访问的场合,
        保证不管处理过程中是否发生错误或者异常都会自动
        执行规定的(“清理”)操作,释放被访问的资源,
        比如有文件读写后自动关闭、线程中锁的自动获取和释放等。
"""
with open('txt/hello-备份') as f:
    print('with语句里面:',f.closed)
    print(f.read(5))

print('with语句外面:',f.closed)

在这里插入图片描述
在这里插入图片描述

6、文件的应用:文件的备份

输入文件的名字,然后程序自动完成对文件的备份。

import os
"""
实现拷贝文件的操作
思路: cp img/passwd(source_file) txt/hello(dst_file)
    (1)判断拷贝的文件是否存在?
    (2)如果存在,将源文件的内容读出来,写入目标文件
"""
def copy(source_file,dst_file):
    if os.path.exists(source_file):
        #将源文件的内容读取出来
        f = open(source_file)
        content= f.read()
        f.close()
        #写入目标文件
        dst_file= open(dst_file,'w')
        dst_file.write(content)
        dst_file.close()
        print("拷贝%s为%s成功"%(source_file,dst_file))
    else:
        print("源文件%s不存在"%(source_file))

copy('img/passwd' , 'txt/hello-备份' )

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值