python入门day11——文件处理、打开方式、操作、指针移动

本文介绍了Python中文件处理的基础知识,包括文件的概念、用途、打开模式(如r、w、a、b等),以及读写操作和指针移动的方法。通过实例展示了如何用文件进行注册登录和文件复制,并探讨了文件修改的两种策略:一次性读取和逐行读取。
摘要由CSDN通过智能技术生成

文件处理

1、什么是文件

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

    应用程序/用户
    操作系统            文件
    硬盘               硬盘

2、为何要用文件

       存取硬盘必须使用文件
       用户/应用程序可以通过文件将数据永久保存的硬盘中,即操作文件就是操作硬盘
       用户/应用程序直接操作的是文件,对文件进行的所有的操作,都是在向操作系统发送系统调用,然后再由操作将其转换成具体的硬盘操作

3、如何用文件(文件处理三步骤)

       f = open(文件路径,打开模式)
       f.write(数据)
       f.close()

    应用程序/用户         文件对象/文件句柄=========》遥控器
    操作系统             打开文件a.txt=======》空调
    硬盘                硬盘

4、绝对路径和相对路径

       绝对路径:就是无论从外部还是内部访问,都能够通过此路径找到文件夹。比较复杂,但是全面。

       windows系统
       C:\a\b\c\new.txt

       linux系统、mac系统
       /a/b/c/d.txt

       因为单个\可能会出错 所以可以前缀加个e 如:file_path=r’C:\a\b\c\new.txt’

       相对路径就是相对于自己的目标文件位置。比较简便,有局限性
       比如a.py跟d.txt同层在相同文件夹 就可以直接用 d.txt

文件的打开模式

1、控制文件读写操作的模式rwa

1.1 r只读模式

       在文件不存在时则报错,文件存在时文件指针跳到文件开头

# 创建一个文本 内容为'123abc你好'
f = open('/Users/Desktop/pycharm_space/aaa.txt', mode='rt', encoding='utf-8')
res = f.read()
# f.write('123') # 报错 不能写
print(res)  # 123abc你好
print(f.readable())  # 判断是否可读  # True
print(f.writable())  # 判断是否可写  # False
f.close()

1.2 w只写模式

       在文件不存在时则创建空文件,文件存在时则清空并重新创建,文件指针跳到文件开头

f = open('b.txt', mode='wt', encoding='utf-8')
f.write("hello2\n")
f.close()

1.3 a只追加写模式

       在文件不存在时则创建空文件,文件存在时也不会清空,文件指针跳到文件末尾

f.txt=open('c.txt',mode='at',encoding='utf-8')
f.txt.write("jason:777\n")
f.txt.write("jjj:666\n")
f.txt.close()

1.4 +必须与rwa联用:r+、w+、a+

        +可以让文件既可以读也可以写

1.5 总结:w与a的异同

       相同点:在打开了文件不关闭的情况下,连续地写入,新的内容永远跟在老内容之后
       不同点:重新打开文件,w会清空老的内容,而a模式会保留老的内容并且指针跳到文件末尾

1.6 应用:用文件注册登录

# 应用
注册部分(只有注册重复,还未加功能)
user_login = input('输入注册账号:').strip()
user_password = input('输入注册密码:').strip()
with open('user.txt', mode='r+t', encoding='utf-8') as f:
    for line1 in f:
        old_user,old_password = line1.strip('\n').split(':')
        if user_login == old_user:
            print('用户已经存在')
            break
        else:
            login = user_login + ':' + user_password + '\n'
            f.write(login)

登录部分(还未加功能)
tag=True
while tag:
    inp_name = input('输入登录账号:').strip()
    inpp_pwd = input('输入登录密码:').strip()
    with open('user.txt', mode='rt', encoding='utf-8') as f2:
        for line2 in f2:
            old_user, old_password = line2.strip('\n').split(':')
            if inp_name <
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值