• day08_文件操作


    # # 账户注册
    # usename = input("请输入用户名:")
    # password = input("请输入密码:")
    #
    # with open("2.txt", mode="w", encoding="utf-8") as account:
    #     account.write("{}
    {}".format(usename, password))
    
    # 账户登录
    li = []
    i = 0
    while i < 3:
        usename1 = input("请输入用户名:")
        password1 = input("请输入密码:")
        with open("2.txt", mode="r", encoding="utf-8") as account1:
            for line in account1:
                li.append(line)
        print(li)
        if usename1 == li[0].strip() and password1 == li[1].strip():  
            #Python strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。
            print("登录成功")
            break
        else:
            if i < 2:
                print("输入错误,重新输入")
            else:
                print("强制退出")
        i += 1
    

      

    计算机系统分为:计算机硬件,操作系统,应用程序三部分。
    
    我们用python或其他语言编写的应用程序若想要把数据永久保存下来,必须要保存于硬盘中,这就涉及到应用程序要操作硬件,众所周知,应用程序是无法直接操作硬件的,这就用到了操作系统。操作系统把复杂的硬件操作封装成简单的接口给用户/应用程序使用,其中文件就是操作系统提供给应用程序来操作硬盘虚拟概念,用户或应用程序通过操作文件,可以将自己的数据永久保存下来。

     1.文件操作

      1.文件路径:绝对路径、相对路径

      2.编码格式:utf-8

      3.操作方式:只读,只写,追加。读写...

      f=open("d:1.txt",mode="r",encoding="utf-8")

      f.read()

      f.close() 

      print(f.read())

          只读:r, 二进制读取:rb(非文字文件,图片,音频等),并且如果你要是带有b的模式操作文件,那么不用声明编码方式。

                  以只读方式打开文件,文件的指针将会放在文件的开头。是文件操作最常用的模式,也是默认模式,如果一个文件不设置mode,那么默认使用r模式操作文件。

          只写:w  ,若有文件,直接覆盖

      f=open("d:1.txt",mode="w",encoding="utf-8")    没有文件则创建,有文件则覆盖

      f.write("sd")

      f.close() 

      

      追加:a   若文件存在,则尾部追加

      f=open("d:1.txt",mode="a",encoding="utf-8")    没有文件则创建,有文件则覆盖

      f.write("sdalkksk")

      f.close() 

      读写:r+  (常用)

      f=open("d:1.txt",mode="r+",encoding="utf-8")   

      print(f.read() )

      f.write("sdalkksk")

      f.close() 

      写读:w+   先清除,后添加

      f=open("d:1.txt",mode="w+",encoding="utf-8")   

      f.write("sdalkksk")

      print(f.read() )

      f.close() 

      读写:a+    光标已经到最后,可以seek(0),将光标一直起始位置,再读取

      f=open("d:1.txt",mode="a+",encoding="utf-8")   

      f.write("sdalkksk")

      print(f.read() )

      f.close() 

    功能详解

    1.seek(n)  #按照字节定光标位置,偏移n个字节

    f = open("小娃娃", mode="r+", encoding="utf-8")
    f.seek(0) # 光标移动到开头
    content = f.read() # 读取内容, 此时光标移动到结尾
    print(content)
    f.seek(0) # 再次将光标移动到开头
    f.seek(0, 2) # 将光标移动到结尾
    content2 = f.read() # 读取内容. 什么都没有
    print(content2)
    f.seek(0) # 移动到开头
    f.write("张国荣") # 写入信息. 此时光标在9 中文3 * 3个 = 9
    f.flush()
    f.close() 

    seek(n)光标移动到n位置,注意: 移动单位是byte,所有如果是utf-8的中文部分要是3的倍数

    通常我们使用seek都是移动到开头或者结尾

    移动到开头:seek(0)

    移动到结尾:seek(0,2) seek的第二个参数表示的是从哪个位置进行偏移,默认是0,表示开头,1表示当前位置,2表示结尾

    2.f.tell()    #返回光标所在位置

      f.truncate() # 截取文件

    read()将文件内容全部读取出来,弊端,当文件很大,就会占内存,容易导致内存崩溃

    read(n)------read()读取的时候指定读取到什么位置

        在r模式下,n按照字符读取

    f = open('path1/小娃娃.txt',mode='r',encoding='utf-8')
    msg = f.read(3)
    msg1 = f.read() # 从三个字符串之后读取
    f.close()
    print(msg)
    print(msg1)
    
    结果: 
    高圆圆
    
    刘亦菲
    张柏芝
    杨紫
    王菲

    3.f.readable()   #是否可读,bool

    4.f.readline()    #读取整行字符串,每次一行(注意点:readline()读取出来的数据在后面都有一个 ),就是会单独换一行

    解决这个问题只需要在我们读取出来的文件后边加一个strip()就OK了

    f = open('path1/小娃娃.txt',mode='r',encoding='utf-8')
    msg1 = f.readline().strip()
    msg2 = f.readline().strip()
    msg3 = f.readline().strip()
    msg4 = f.readline().strip()
    f.close()
    print(msg1)
    print(msg2)
    print(msg3)
    print(msg4)
    
    结果:
    高圆圆
    刘亦菲
    张柏芝
    杨紫

    5.f.readlines()   #将每一行放置列表中,读取

    打开文件的另一种方式

    咱们打开文件都是通过open去打开一个文件,其实Python也给咱们提供了另一种方式:with open() as .... 的形式,那么这种形式有什么好处呢?

    # 1,利用with上下文管理这种方式,它会自动关闭文件句柄。
    with open('t1',encoding='utf-8') as f1:
        f1.read()
        
    # 2,一个with 语句可以操作多个文件,产生多个文件句柄。
    with open('t1',encoding='utf-8') as f1,
            open('Test', encoding='utf-8', mode = 'w') as f2:
        f1.read()
        f2.write('老男孩老男孩')

    这里要注意一个问题,虽然使用with语句方式打开文件,不用你手动关闭文件句柄,比较省事儿,但是依靠其自动关闭文件句柄,是有一段时间的,这个时间不固定,所以这里就会产生问题,如果你在with语句中通过r模式打开t1文件,那么你在下面又以a模式打开t1文件,此时有可能你第二次打开t1文件时,第一次的文件句柄还没有关闭掉,可能就会出现错误,他的解决方式只能在你第二次打开此文件前,手动关闭上一个文件句柄。

    修改文件

    # 文件不能修改

    若修改文件,新建一文件写入,替换,删除旧文件,新文件重命名

    import os

    with open("1","r",encoding="utf-8") as f1,open("2.txt","w",encoding="utf-8") as f2: for line in f1: if "wzc" in line: line = line.replace("wzc","wuzhengchong") #写入文件 f2.write(line) import os os.remove("1") #删除源文件 os.rename("2.txt","1") #重命名
  • 相关阅读:
    【原】git常见用法
    【转】EDID的简介和解析
    rsa公钥和私钥的生成
    往redis中存储数据是利用pipeline方法
    对于接口文档个的说明内容包括哪些
    blueprint的使用
    flask中如何生成迁移文件
    flask中自定义过滤器
    jsonify
    flask自定义处理错误方法
  • 原文地址:https://www.cnblogs.com/wzc27229/p/10952639.html
Copyright © 2020-2023  润新知