zoukankan      html  css  js  c++  java
  • 文件

    什么是文件?

    操作系统提供给你操作硬盘的一个工具

    为什么要用文件?

    因为人类和计算机要求永久保存数据

    怎么用文件?

    open("要打开的文件的相对路径/绝对路径")  #注意要加后缀名

    在这里要说一下相对路径和绝对路径

    相对路径:必须与当前py文件在同一及目录下,如下图打开a.txt,在这里a.txt和test.py是在同一级目录下

    绝对路径:文件所在的目录到很目录的全部地址

    with open(r'E:pythonproject001day07a.txt',mode='r',encoding='utf-8')as rf:
        print(rf.read())
    # f = open("a.txt")
    #
    # print(f.readable())  # 判断当前文件是否可读
    # print(f.writable())  # 判断当前文件是否可写
    #
    # # del f  # 回收变量资源
    # f.close()  # 回收操作系统的资源

    with会自动帮你回收操作系统的资源,无需自己操作

    with open('a.txt',mode='r')as rf,open('a.txt',mode='w')as wf:  # with会自动帮你回收操作系统的资源,无需自己操作
        print(rf.readable())
        print(wf.writable())
    
    打印结果:
    True
    True

    rb:read bytes  把文件转换为二进制读出来

    with open(r'th.jpg','rb')as f,open(r'b.png','wb')as wf:
        wdx = f.read()
        wf.write(wdx)
        print(wf.write(wdx))

    打开文件的模式

    r模式:只读,如果文件不存在,会报错

    with open(r'dira.txt','r',encoding='utf-8')as f:
        print(f.readable())
        print(f.readline())  # 执行一次,打印一行内容
        print(f.readlines())    #一次性读取整个文件内容,并按行返回到list,方便我们遍历
        print(f.read())

    w模式:只写,如果文件不存在,则新建文件,如果文件存在数据,会将数据清空,重新写入(慎用!)

    with open(r'dira.txt','w',encoding='utf8')as f:
        print(f.writable())
        f.write('我贼帅!!')

    a模式:追加写,如果文件内存在数据,会在已有数据后边追加数据,如果文件不存在,则新建文件

    with open(r'dira.txt','a',encoding='utf8')as f:
        f.write('
    对!我非常帅!!')

      r+:可读可写,如果文件不存在,报错,正在写的内容不显示,写完才会显示

    with open('a.txt','r+',encoding='gbk') as f:
        f.write('我好帅I am handsome
    ')
        print(f.read())

    这时打印是不显示的,但是a.txt文件里已经写入数据了

    w+:可读可写,如果文件不存在,新建文件写入数据,正在写的内容不显示,写完才会显示(覆盖数据,慎用)

    注意此时有三条数据,执行以下代码你会发现什么

     

    with open('a.txt','w+',encoding='gbk') as f:
        f.write('我好帅I am handsome
    ')
        print(f.read())

     这时w+模式就会把原来的数据覆盖,所以要慎用!

    a+:可读可写,如果文件不存在,新建文件写入数据,读取文件必须自行移动光标

    with open('a.txt','a+',encoding='gbk') as f:
        f.write('我好帅I am handsome
    ')
        print(f.read(2))

    文件内的光标移动

    f.seek

    f.seek有两个参数:offset和whence

    offset:相对偏移度(光标移动的位数)

    whence:指定光标位置从何开始

              whence有三个参数:0,1,2

         0:从文件开头

           1:从当前位置

        2:从文件末尾——这时offset就必须是负数或0

    with open('a.txt','r',encoding='gbk')as f:
        f.seek(0,0)       # 光标移动的位数为0,从文件开头
        print(f.read())   # 读取a.txt所有内容

    f.tell:光标所在的位置

    with open('a.txt','r',encoding='gbk')as f:
        f.seek(6,0)        # 光标移动的位数为6,从文件开头
        print(f.tell())    # 光标所在位置6
        print(f.read(4))    # 读取a.txt中从光标位置起,前四个字符

    拓展练习:监视文字输入

    新建py文件:输入信息文件

    #coding=gbk
    import time
    res = time.strftime('%Y-%m-%d %H:%M:%S')
    with open(r'a.txt','a',encoding='gbk')as f:
            f.write(f'{res}:马上要学函数了,有点难,怎么办
    ')

    再建一个py文件:监视文件

    #coding=gbk
    import time
    
    with open(r"a.txt", 'r', encoding='gbk')as f:
        f.seek(0, 2)  # 以文件末尾为参照点,移动0位
        while True:
            # time.sleep()
            res = f.readline()  # 一次读一行
            if res:  # 如果你读出数据了,就执行下面的代码块
                print(f'录入记录:{res}')
    
    
    ##PS:需要手动结束循环

     文件的修改

    修改前a.txt中的数据

    with open(r'a.txt','r',encoding='gbk')as f:
        data = f.read()
    with open(r'a.txt','w',encoding='gbk')as f:
        res = data.replace('tank','DSB')
        f.write(res)

    执行完代码后

     以上内容就是关于文件的内容

  • 相关阅读:
    葡萄城报表介绍:Web 报表
    葡萄城报表介绍:B/S 报表软件
    深入解析 ERP 计划的各个层次
    大数据商业智能的十大戒律
    活字格企业 Web 应用生成器新手上路指南
    ERP 实施执行力提高的障碍,看看你中了几招?
    11招教你做好 ERP 系统维护
    使用yum命令安装lamp和lnmp
    yii2文件上传
    yii2.0使用ActionForm创建表单
  • 原文地址:https://www.cnblogs.com/aheng/p/11815010.html
Copyright © 2011-2022 走看看