Python知识——文件操作

本文详细介绍了Python中文件操作的基本概念和常用模式,如rt、wt、at等。通过实例展示了如何打开、读取、写入和关闭文件,以及在不同模式下文件操作的特点,包括文件不存在时的行为、内容追加和覆盖等。同时,强调了文件编码的重要性,并提供了错误处理和上下文管理的使用方法。
摘要由CSDN通过智能技术生成

文件操作

1、什么是文件

文件是操作系统提供给用户/应用程序操作硬盘的一种虚拟的概念/接口

用户/应用程序(open())
操作系统(文件)
计算机硬件(硬盘)

2、为何要用文件

用户/应用程序可以通过文件将数据永久保存在硬盘中,即操作文件就是操作硬盘

3、如何用文件:open()

(1)控制文本读写内容的模式

t和b 不能单独使用,必须和r/w/a连用

t文本(默认的模式)
  1. 读写都是以str(unicode)为单位的
  2. 文本文件
  3. 必须指定encoding=‘utf-8’
操作文件

1、打开文件
open()
在写文件路径的时候可以选择 在字符串前加入r,意思是不使用转义字符,而是直接用源生的意思。

f=open(r'D:\text.txt',mode='rt',encoding='utf-8')

2、 操作文件
读 \ 写文件,应用程序对文件的读写请求都是在向操作系统发送系统调用,然后由操作系统控制硬盘把输入读入内存,或者写入硬盘

res=f.read()
print(res)

3、关闭文件

f.close() # 回收操作系统资源
#del f 回收应用程序资源

变量f存在,但是不能再读了

with:上下文管理

with 在文件使用完成之后,自动会将文件close

with open(r'D:\text.txt', mode='rt', encoding='utf-8') as f1: 
    #f1=open(r'D:\text.txt', mode='rt', encoding='utf-8')
    res = f1.read()
    print(res)
# f1.close()
指定字符编码

没有指定encoding参数,操作系统会使用自己默认的编码
linux \ mac系统默认utf-8
window默认gbk

with open(r'D:\text.txt', mode='rt', encoding='utf-8') as f1: 
	res = f1.read() #t模式会将f.read()读出的结果解码成unicode,
    print(res)

以t模式为基础进行内存操作

rt模式(默认的操作模式)

只读模式

1.当文件不存在时:会报错
Traceback (most recent call last):
  File "d:\python\study_6_7.py", line 33, in <module>
    with open(r'C:\text.txt', mode='rt', encoding='utf-8') as f1:
FileNotFoundError: [Errno 2] No such file or directory: 'C:\\text.txt'
2.当文件存在时:文件指针跳到开始位置

r模式案例
模拟用户登录帐号,从硬盘中提取多个用户信息

inp_username = input('请输入您的用户名:').strip()
inp_password = input('请输入您的密码:').strip()
with open(r'D:\text.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('登录成功')
            break
    else:
        print('登录失败')
w模式(只写模式)

当文件不存在时:会创建

with open(r'D:\new_file.txt',mode='wt',encoding='utf-8') as f:
	...

此时在d盘创建了一个新的文件
在这里插入图片描述
将新建的文本文件写入内容:
在这里插入图片描述

当文件存在时:会清空文件,指针位于开始位置

再次执行上述代码
在这里插入图片描述
内容被清空了

write( )
在这里插入图片描述

强调1:
在以w模式打开文件没有关闭的情况下,连续写入,新的内容总是跟在旧的之后

with open(r'D:\new_file.txt',mode='wt',encoding='utf-8') as f:
    f.write('hahahahaha\n')
    f.write('hahahahaha\n')
    f.write('hahahahaha\n')

在这里插入图片描述
强调2
在以w模式打开文件关闭的情况下,连续写入,新的内容总是清空旧的内容:

with open(r'D:\new_file.txt',mode='wt',encoding='utf-8') as f:
    f.write('hahahahaha1\n')
with open(r'D:\new_file.txt',mode='wt',encoding='utf-8') as f:
    f.write('hahahahaha2\n')
with open(r'D:\new_file.txt',mode='wt',encoding='utf-8') as f:
    f.write('hahahahaha3\n')

在这里插入图片描述

w模式案例
用来创建全新的文件,将旧文件的内容复制到新的文件内

src_files=input("源文件绝对路径:").strip()
dst_files=input("新文件绝对路径:").strip()
with open(r'{}'.format(src_files),mode='rt',encoding='utf-8') as f,\
    open(r'{}'.format(dst_files),mode='wt',encoding='utf-8') as f2:
    ret=f.read()
    f2.write(ret)

在这里插入图片描述


a模式(只追加写)

当文件不存在时:会创建新的文件
当文件存在时:会直接跳到文本内容末尾

强调:w模式与a模式

  • 相同点:在以w模式打开文件没有关闭的情况下,连续写入,新的内容总是跟在旧的之后

  • 不同点:以a模式重新打开文件,不会清空文件,会将文件指针直接移动到文件末尾

案例:将用户注册的帐号,密码存入硬盘,可以存多个用户信息

inp_name=input("请输入你的用户名:")
inp_psw=input("请输入你的密码:")
with open(r'D:\user.txt',mode='at',encoding='utf-8') as f:
    f.write('{}:{}\n'.format(inp_name,inp_psw))

在这里插入图片描述

在这里插入图片描述

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值