文件操作模式详解

bailongcaptain bailongcaptain     2023-04-12     146

关键词:

一、with的使用

with open(‘a.txt‘,mode=‘rt‘) as f1: 
    res=f1.read()
    print(res)
# f1=open(‘a.txt‘,mode=‘rt‘)

with方法可以在执行完子代码后自动关闭文件,节约内存空间。

二、指定字符编码

强调:t和b不能单独使用,必须跟r/w/a连用
?
t文本(默认的模式)
1、读写都以str(unicode)为单位的
2、文本文件
3、必须指定encoding=‘utf-8‘
# 没有指定encoding参数操作系统会使用自己默认的编码
# linux系统默认utf-8
# windows系统默认gbk
?
with open(‘c.txt‘,mode=‘rt‘,encoding=‘utf-8‘) as f:
    res=f.read()
    # t模式会将f.read()读出的结果解码成unicode
    print(res,type(res))
?

三、文件操作模式详解

技术图片

模式mode 操作 若不存在 是否清空
r 只能读不能写 报错 -
rb 二进制只读 报错 -
r+ 可读可写 报错
rb+ 二进制读写 报错
w 只能写不能读 创建文件
wb 二进制只写 创建文件
w+ 可读可写 创建文件
wb+ 二进制读写 创建文件
a 追加不能读 创建文件 否,追加写
ab 二进制追加不能读 创建文件 否,追加写
a+ 可读可写 创建文件 否,追加写
ab+ 二进制追加可读可写 创建文件 否,追加写



只读模式

下面以文本模式为例

# 1、r(默认的操作模式):只读模式,当文件不存在时报错,当文件存在时文件指针跳到开始位置
with open(‘c.txt‘,mode=‘rt‘,encoding=‘utf-8‘) as f:
    res=f.read() # 把所有内容从硬盘读入内存
   print(res)
# 一次性读完,若文件较大会比较吃力

案例:使用存在硬盘内的账户信息登录验证

inp_username=input(‘your name>>: ‘).strip()
inp_password=input(‘your password>>: ‘).strip()
?
# 验证
with open(‘user.txt‘,mode=‘rt‘,encoding=‘utf-8‘) as f:
    for line in f
        # 程序会循环多次若找到了对应的账号密码会退出,若循环结束了还没找到,则登录失败。
       username,password=line.strip().split(‘:‘)
        if inp_username == username and inp_password == password:
            print(‘login successfull‘)
            break
    else:
        print(‘账号或密码错误‘)

只写模式

当文件不存在时会创建空文件,当文件存在会清空文件,指针位于开始位置
with open(‘d.txt‘,mode=‘wt‘,encoding=‘utf-8‘) as f:
    f.read() # 报错,不可读
    f.write(‘你好 ‘)
# 强调1:
# 在以w模式打开文件没有关闭的情况下,连续写入,新的内容总是跟在旧的之后
with open(‘d.txt‘,mode=‘wt‘,encoding=‘utf-8‘) as f:
    f.write(‘你好1 ‘)
    f.write(‘你好2 ‘)
    f.write(‘你好3 ‘)
?
# 强调2:
# 如果重新以w模式打开文件,则会清空文件内容
with open(‘d.txt‘,mode=‘wt‘,encoding=‘utf-8‘) as f:
    f.write(‘你好1 ‘)
with open(‘d.txt‘,mode=‘wt‘,encoding=‘utf-8‘) as f:
    f.write(‘你好2 ‘)
with open(‘d.txt‘,mode=‘wt‘,encoding=‘utf-8‘) as f:
    f.write(‘你好3 ‘)

案例:w模式用来创建全新的文件

文件文件的copy工具(文本文件)

src_file=input(‘源文件路径>>: ‘).strip()
dst_file=input(‘源文件路径>>: ‘).strip()
with open(r‘‘.format(src_file),mode=‘rt‘,encoding=‘utf-8‘) as f1,
    open(r‘‘.format(dst_file),mode=‘wt‘,encoding=‘utf-8‘) as f2:
    res=f1.read()
    f2.write(res)
# 1.用户分别输入文件1和文件2的路径
# 2.先以只读的方式打开文件1,同时以只写的方式打开文件2,将文件1中的数据读出并赋值给f1,再写# 入到文件2中。

a:只追加写

# 只追加写,在文件不存在时会创建空文档,在文件存在时文件指针会直接调到末尾
with open(‘e.txt‘,mode=‘at‘,encoding=‘utf-8‘) as f:
   # f.read() # 报错,不能读
  f.write(‘你好1 ‘)
   f.write(‘你好2 ‘)
   f.write(‘你好3 ‘)

w 模式与 a 模式的异同: 相同点:在打开的文件不关闭的情况下,连续的写入,新写的内容总会跟在前写的内容之后。 不同点:以 a 模式重新打开文件,不会清空原文件内容,会将文件指针直接移动到文件末尾,新写的内容永远写在最后。

案例:a模式用来在原有的文件内存的基础之上写入新的内容,比如记录日志、注册

注册功能

name=input(‘请输入用户名:‘)
pwd=input(‘请输入密码:‘)
with open(‘db.txt‘,mode=‘at‘,encoding=‘utf-8‘) as f:
    f.write(‘: ‘.format(name,pwd))

+不能单独使用,必须配合r、w、a

# r+
with open(‘g.txt‘,mode=‘rt+‘,encoding=‘utf-8‘) as f:
    # print(f.read())
    f.write(‘中国‘)
# w+
with open(‘g.txt‘,mode=‘w+t‘,encoding=‘utf-8‘) as f:
    f.write(‘111 ‘)
    f.write(‘222 ‘)
    f.write(‘333 ‘)
    print(‘====>‘,f.read())
# a+
with open(‘g.txt‘,mode=‘a+t‘,encoding=‘utf-8‘) as f:
    print(f.read())
?
    f.write(‘444 ‘)
    f.write(‘5555 ‘)
    print(f.read())

技术图片


linuxcpio三种操作模式详解!

  cpio是一种数据备份与恢复工具,用于创建cpio档案文件,那么Linuxcpio三种操作模式是什么?分别是:copy-out模式、copy-in模式、copy-pass模式,接下来来看看详细的内容介绍。  在Linux中,cpio是一种数据备份与恢复工具,用于创... 查看详情

6.文件操作

文件处理流程模式:常用模式字节模式(二进制操作):可读可写模式:操作文件常用文件操作方法seek详解:with————上下文管理器文件处理流程打开文件open()f=open(filename,mode=‘‘)操作文件关闭文件close()模式:常用模式以... 查看详情

linux之vim详解

...编辑工具的一、vim的三种模式1、命令模式:使用Vim编辑文件时,默认处于命令模式。在此模式下,可以使用上、下、左、右键或者k、j、h、l命令进行光标移动,还可以对文件内容进行复制、粘贴、替换、删除等操作。2、输入模... 查看详情

linuxio模式及selectpollepoll详解

...于内核态的程序可以访问用户空间和内核空间。  2、文件描述符fd    Linux将所有设备都当做文件来处理,文件描述符来标识每个文件对象。   查看详情

redis的主从复制哨兵模式以及群集模式(相关概念及实验详解)(代码片段)

...4.搭建Redis主从复制①环境准备②安装Redis③修改Redis配置文件(Master节点操作)④修改Redis配置文件(Slave节点操作)⑤验证主从效果⑥在Master节点上验证Slave节点二.Redis哨兵模式1.哨兵模式原理2.哨兵模式的作用3.哨兵模式的结构4.搭建R... 查看详情

linux操作系统vim编辑器和管道与重定向命令以及u盘备份文件学习详解(代码片段)

...的一种终端设备,是由Teletype公司生产的。设备名放在特殊文件目录/dev/下。二.vim编辑器基本上vi/vim共分为三种模式,分别是命令模式(Commandmode),输入模式(Insertmode)和底线命令模式(Lastlinemode) 查看详情

sed命令详解

SED常用功能处理文本文件分析日志文件修改配置文件SED处理流程文本或管道输入—-读入一行到模式空间(临时缓冲区)—-sed命令处理—–输出到屏幕—-读入一行到模式空间—–循环SED原则sed一次处理一行内容sed不改变文件内容(除... 查看详情

hdfs功能详解介绍(2)

...式安全模式是HDFS所处的一种特殊状态,在这种状态下,文件系统只接受读数据请求,而不接受删除、修改等变更请求。在NameNode主节点启动时,HDFS首先进入安全模式,DataNode在启动的时候会向namenode汇报可用的block等状态,当整... 查看详情

搞懂redis持久化,rdb模式aof模式工作原理详解及操作(代码片段)

...灾难恢复.可以看作快照,也可以理解为MysqlDumpAOF则是写入操作的日志,可以当作MySQLBi 查看详情

vi指令详解

...模式:  在我们刚刚通过vi新建或打开一个已经存在的文件时,首先默认被读取的模式就是“命令模式”,命令模式的特征就是,在编辑器窗口左下角的位置上没有任何的提示标语。   在这个模式下,如果不通过相应的... 查看详情

3.文件操作及编码解码补充

文件操作:1.打开文件f=open(name,mode)name:文件名的字符串mode:访问模式(只读,写入,追加等)2.读写等操作date=f.read()3.关闭文件f.close()模式详解:如果省略书写访问模式,则访问模式默认为r或rb.通常只用主模式读写文件r以只读方式打开文... 查看详情

linux上的rsync命令详解

...作.rsync工具包被用来从一个位置到另一个位置高效地同步文件和文件夹.rsync可以实现在同一台机器的不同文件直接备份,也可以跨服务器备份.rsync语法如下从语法结构我们可以看出,源和目标即可以在本地也可以在远端.如果是远端... 查看详情

1-qt-文件操作

Qt文本文件的读写操作Qt文件操作详解(创建、写入、删除、INI、XML文件等二进制文件的读写文件可以使用QFile类、QStream文本文件的读写建议使用QTextStream类,它操作文件更加方便。打开文件时,需要参数指定打开文件的模式:&nb... 查看详情

linux操作命令分类详解-进程查找其他(代码片段)

...章1、su、sudo1.1sudo使用步骤1.2常用参数搭配1.3实例2、上传文件工具命令3、系统进程命令3.1ps显示当前进程的状态3.2kill 删除执行中的程序或工作4、查找命令4.1find查找命令4.2locate快速查找命令4.3whereis查找文件命令4.4which环境变量... 查看详情

postgresql学习总结——postgresql模式(schema)详解(代码片段)

...集合。一个模式可以包含视图、索引、数据类型、函数和操作符等。相同的对象名称可以被用于不同的模式中而不会出现冲突,例如schema1和myschema都可以包含名为mytable的表。模式类似于操作系统层的目录,但是模式不能... 查看详情

postgresql学习总结——postgresql模式(schema)详解(代码片段)

...集合。一个模式可以包含视图、索引、数据类型、函数和操作符等。相同的对象名称可以被用于不同的模式中而不会出现冲突,例如schema1和myschema都可以包含名为mytable的表。模式类似于操作系统层的目录,但是模式不能... 查看详情

linuxsed命令详解(代码片段)

...的内容送到屏幕。接着处理下一行,这样不断重复,知道文件末尾。文件内容并没有改变,除非你使用重定向存储输出。sed主要用自动编辑一个或者多个文件;简化对文件的反复操作;编写转换程序等。s 查看详情

文件操作详解(代码片段)

文件介绍:文件主要是存储在磁盘(外存)上而在程序里,文件一般和外存相联系,因为直接操作外存不像操作内存那样方便,需通过“文件”方式来进行外存的操作~如图:由于磁盘上文件很多,需通过文件... 查看详情