zoukankan      html  css  js  c++  java
  • 文件操作

    1.文件,什么是文件?
    文件是操作系统提供给用户/应用程序操作硬盘的一种虚拟接口

    计算机三层体系结构:用户/应用程序 open()
    操作系统(文件)
    计算机硬件(硬盘)
    2.为什么要用文件?
    用户/应用程序可以通过文件将数据永久的保存在硬盘中,即操作文件就是操作硬盘
    用户/应用程序直接操作的是文件,对文件进行的操作都是在向操作系统发送系统调用,
    然后在由操作系统转换成具体的硬盘操作
    3.如何使用文件?open()
    控制文件读写内容的模式 t/b
    t/b不能单独使用 要和r/w/a联合使用

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

    b二进制/bytes

    控制文件读写操作的模式
    1.r 只读模式
    2.w 只写模式
    3.a 只追加写模式
    4.+:r+/w+/a+
    # 1.打开文件
    # window路径分隔符问题
    # open('C:a.txt bcd.txt')
    # 解决方案一:推荐
    # open(r'C:a.txt bcd.txt') #正常路径前面加r
    # 解决方案二:
    # open('C:/a.txt/nb/c/d.txt') #反斜杠方式

    f=open(r"hahaa.txt",mode="rt")#f的值是一种变量,占用的是应用程序的内存空间
    print(f)

    # 2.操作文件:读/写文件,应用程序对文件的读写请求都是在向操作系统发送系统调用
    #然后由操作系统控制硬盘把输入读入内存或写入硬盘
    f=open(r"hahaa.txt",mode="rt")
    res=f.read()
    print(res,end=" ")
    print(type(res))
    # 3.关闭文件
    # f.close()#回收操作系统资源
    # f.read()#变量f 存在,但是不能在读了
    # del f #回收应用程序资源

    # 以t 模式为基础进行内存操作
    # 1.r(默认的操作模式) :只读模式,当文件不存在时报错,文件存在时指针跳转到开始位置
    # with open("haha/a.txt",mode="rt",encoding="utf-8")as f:
    # print("第一次读".center(50,"*"))
    # res=f.read()
    # print(res)
    # with open(r"hahaa.txt",mode="rt",encoding="utf-8")as f:
    # print("第二次读".center(50,"*"))
    # res=f.read()
    # print(res)


    # print("案例分析".center(20,"="))
    # user_name=input("请输入你的账号:")
    # user_password=input("请输入你的密码:")
    # with open(r"hahauser.txt",mode="rt",encoding="utf-8")as f:
    # # res=f.read()
    # # print(res)
    # for line in f:
    # # print(line)
    # name,password=line.strip().split(":")
    # if user_name==name and user_password==password:
    # print("登录成功")
    # break
    # else:
    # print("登录失败")
    # print("="*20)

    # user_name=input("请输入你的账号:")
    # user_password=input("请输入你的密码:")
    # with open("haha/d.txt",mode="at",encoding="utf-8")as f:
    # f.write("{}:{} ".format(user_name,user_password))
    # print("恭喜你注册成功!")
    # with open(r"hahad.txt",mode="rt",encoding="utf-8")as l:
    # res=l.read()
    # print(res)

    # print("案例分析:用户注册".center(30,"="))
    # name=input("输入你的账号:")
    # password=input("输入你的密码:")
    # with open("haha/d.txt",mode="at",encoding="utf-8")as f:
    # f.write("{}:{} ".format(name,password))
    # print("恭喜你注册成功!")
    # print("="*30)
    # with open(r"hahad.txt",mode="rt",encoding="utf-8")as l:
    # res=l.read()
    # print(res)
    # print("*"*30)
    # user_name=input("账号:")
    # user_password=input("密码:")
    # with open("haha/d.txt",mode="rt",encoding="utf-8")as k:
    # for line in k:
    # name,password=line.strip().split(":")
    # if user_password==password and user_name==name:
    # print("login success!")
    # break
    # else:
    # print("login default!")


    # 应用程序------》文件
    # 应用程序------》数据库管理软件-------》文件
    # 2.w :只写模式,当文件不存在时创建空文件,当文件存在时会清空文件,指针位于开始位置
    # with open(r"hahae.txt",mode="wt",encoding="utf-8")as a:
    # # res=a.read()#不能进行读操作 会报错
    # a.write("你好啊 小傻瓜")
    #强调1 在以w 模式打开文件没有关闭的条件下,连续写入新的内容总会跟在旧的内容后面
    # with open("haha/e.txt",mode="wt",encoding="utf-8")as a:
    # a.write("哈哈 ")
    # a.write("哈哈哈 ")
    # a.write("哈哈哈哈 ")
    #强调2 重新以w 模式打开文件 则会清空内容
    with open(r"hahae.txt",mode="wt",encoding="utf-8")as a:
    a.write("你好啊 小傻瓜")
    with open("haha/e.txt",mode="wt",encoding="utf-8")as a:
    a.write("哈哈哈哈 ")


    #w 模式用来创造新的文件
    #文件的copy工具
    # src_file=input("输入源文件路径》:").strip()
    # new_file=input("输入源文件路径》:").strip()
    # with open(r"{}".format(src_file),mode="rt",encoding="utf-8")as f1,
    # open(r"{}".format(new_file),mode="wt",encoding="utf-8")as f2:
    # res=f1.read()
    # f2.write(res)

    #3.a 只追加写 如果文件不存在 ,创建空文件;如果文件存在 ,文件指针会掉到末尾
    # with open("haha/e.txt",mode="at",encoding="utf-8")as f:
    # # f.read()#报错 不能进行读操作
    # f.write("小朋友你是不是有很多问好?")

    #强调 w模式与a模式异同
    #相同点:在打开文件不关闭的情况下,连续的写入,新的内容总是跟在原有内容的后面
    #不同点:以a模式打开文件不会清空原文件内容,会将文件指针移动到末尾,在文件内容末尾添加内容
    # 使用a 可以实现注册功能
    # name=input("账号》:")
    # psw=input("密码》:")
    # with open("haha/f.txt",mode="at",encoding="utf-8")as q:
    # q.write("{}:{} ".format(name,psw))
    # with open("haha/f.txt",mode="rt",encoding="utf-8")as q:
    # res=q.read()
    # print(res)



    # +不能单独使用 必须结合r w a 一同使用
    # with open("haha/a.txt",mode="rt+",encoding="utf-8")as f:
    # # f.write("小朋友你是不是很可爱 ")
    # res=f.read()
    # print(res)
    with open("haha/a.txt",mode="w+t",encoding="utf-8")as a:
    a.write("你好")
    res=a.read()
    print(res)
  • 相关阅读:
    effective c++ 条款10 让operator= 返回*this的引用
    基于vs2008的opengl开发环境的配置
    effective c++ 条款13 以对象管理资源
    effective C++ 条款06如果你不想让编译器为你生成函数就应该明确拒绝
    effective c++条款07为多态基类声明为virtual析构函数
    effective c++条款08别让异常逃离析构函数
    effective c++条款11 在operator=中处理“自我赋值”
    ubuntu 下的截图工具
    effective c++ 条款12 赋值对象时勿忘其每一个成员
    [linux 安装]修改centos的yum源
  • 原文地址:https://www.cnblogs.com/mayrain/p/12499267.html
Copyright © 2011-2022 走看看