• Python基础内容训练9(文件操作)


    文件操作

    文件概念
    在这里插入图片描述
    文件的操作

    这个定位是指定位到文件的那一部分

    在这里插入图片描述

    • 打开操作的r模式----只读,只能文件进行读操作
      在这里插入图片描述
    #1. 打开文件
    f = open('a.txt','r') #相当于给文件开了一条管道,或者说接受返回的文件对象
    #2. 进行操作
    content = f.read()
    print(content)
    #3. 关闭文件
    f.close()
    

    在这里插入图片描述

    • 打开操作的w模式----只写,只能对文件进行写操作

    在这里插入图片描述

    # 1. 打开文件
    f = open('a.txt','w') #相当于给文件开了一条管道,或者说接受返回的文件对象
    # 2. 进行操作
    f.write('nihao')
    
    # 3. 关闭文件
    f.close()
    

    在这里插入图片描述

    • 打开操作的a模式----以追加的方式对文件进行只写操作,并且是在文件末尾进行只写操作

    在这里插入图片描述
    在这里插入图片描述

    # 1. 打开文件
    f = open('a.txt','a') #相当于给文件开了一条管道,或者说接受返回的文件对象
    # 2. 进行操作
    f.write('123')
    
    # 3. 关闭文件
    f.close()
    

    在这里插入图片描述

    • 前面的r,w,a可以和b组合

    在这里插入图片描述

    案例:对图片进行操作

    # 1. 打开一张图片,取出内容,获取内容的前半部分
    # 1.1 打开文件
    f = open('1.png','rb')
    # 1.2 读取文件内容
    content = f.read()
    print(content)
    # 1.3 关闭文件
    f.close()
    # 2. 打开另一个图片,再把取出的前半部分,写入第二个图片中
    # 2.1 打开目标文件
    f1 = open('2.png','wb')
    # 2.2 写入操作
    content1 = content[0:len(content) //2]
    f1.write(content1)
    # 2.3 关闭文件
    f1.close()
    

    在这里插入图片描述
    从图片结果看,第二张图片是第一张图片的一部分
    在这里插入图片描述
    在这里插入图片描述

    • 前面的r,w,a可以和b+组合

    在这里插入图片描述
    r+是既可以读,又可以写的;如果在r+模式先写了两个操作,既有读又有写的操作,读在写前面的话,先读,指针到了最后,写的时候会把内容写在最后面。

    文件的定位

    • f.seek(offset,whence) 两个参数一个是开端,另外一个是依据那个参照点的变量
    • f.tell是告诉当前指针位置在哪里

    在这里插入图片描述

    在这里插入图片描述

    f = open('1.txt','r')
    
    print(f.tell())
    f.seek(2)
    print(f.tell())
    print(f.read())
    print(f.tell())
    f.close()
    

    在这里插入图片描述

    文件的读操作

    在这里插入图片描述

    • f.readline()是读取一行元素
    f = open('1.txt','r')
    
    result = f.readline()
    print(result)
    result1 = f.readline()
    print(result1)
    
    f.close()
    

    在这里插入图片描述
    这里我们看到每一次输出后下面都有一个空行,这是print函数导致的,我们在print函数后面用end的空字符结尾,不让他换行就可以解决

    f = open('1.txt','r')
    
    result = f.readline()
    print(result,end='')
    result1 = f.readline()
    print(result1,end='')
    
    f.close()
    

    在这里插入图片描述

    • f.readlines可以自动的将文件按照换行符进行处理,将处理好的每一行组成一个列表返回
    f = open('1.txt','r')
    content = f.readlines()
    print(content)
    f.close()
    

    在这里插入图片描述
    文件的遍历操作

    在这里插入图片描述

    import collections
    f = open('1.txt','r')
    print(isinstance(f,collections.Iterator)) #判断是不是可迭代的
    for i in f:
        print(i,end='')
    f.close()
    
    f = open('1.txt','r')
    content = f.readlines()
    for i in content:
        print(i,end='')
    f.close()
    

    在这里插入图片描述

    • 判断文件是否可读
    f = open('1.txt','w')
    if f.readable():
        content = f.readlines()
        for i in content:
            print(i,end='')
    f.close()
    

    在这里插入图片描述

    • 读取文件的注意事项:

    在这里插入图片描述

    文件的写入操作

    在这里插入图片描述

    f = open('1.txt','a')
    if f.writable():
        print(f.write('abc'))
    f.close()
    

    在这里插入图片描述

    文件的关闭操作

    在这里插入图片描述

    文件的相关操作

    要先导入os模块

    • 重命名操作

    os.rename(’原来的文件名’,‘现在的文件名’)
    os.renames(和上面一样,只不过如果现在的文件不存在会自动创建)一层一层需修改,多级的进行修改
    在这里插入图片描述

    • 删除操作

    在这里插入图片描述

    • 创建文件夹

    在这里插入图片描述
    在这里插入图片描述

    • 查看改变列表目录

    在这里插入图片描述

    • 文件的案例:要求把一个文件复制到另外一个文件中

    为什么开头要加os模块呢,因为你当前位置不在文件夹呢,想要操作文件夹内的文件就要切换到当前模块下来进行复制操作

    import os
    os.chdir('file')
    #文件的案例,实现文件的复制
    # 1. 打开源文件和新文件,源文件可以是只读,新文件可以是追加
    source_file = open('1.txt','r')
    dis_file = open('1_bat.txt','a')
    
    # 2. 从源文件中读取内容,放入目标文件中
    content = source_file.read()
    dis_file.write(content)
    
    source_file.close()
    dis_file.close()
    

    在这里插入图片描述
    在这里插入图片描述
    当进行大文件复制的时候,可以一行一行进行复制,下面对一行一行进行复制的时候,要加个循环和判断,对于要复制的内容为0的时候就结束循环

    在这里插入图片描述

    • 案例2:文件的分类,根据不同的后缀名对文件进行不同的分类

    在这里插入图片描述

    # 1. 获取所有的文件名称列表
    import os
    
    import shutil
    os.chdir('file') #切换到file目录下
    file_list = os.listdir('./')
    # print(file_list) #列表的形式
    # 2. 遍历所有的文件名称
    for file_name in file_list:
        # print(file_name)
    # 3. 分解文件的后缀名(尤其是最后一个.,比如这种的aa.xx.txt)
        index = file_name.rfind('.')
    # 根据这个索引,从当前位置开始取后面的后缀名
        extension = file_name[index+1:] #切片处理取后缀
        print(extension)
    # 查看一下,是否存在同名的目录
    # 如果不存在,直接创建一个目录
        if not os.path.exists(extension):
            os.mkdir(extension)
        shutil.move(file_name,extension)
    
    

    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    Collection体系集合
    wujie初使用--部署篇
    【Python编程】教你如何打造极致体验的五子棋对战游戏
    Nestjs中控制器和路由的配置使用
    CAD特殊符号,你不一定会
    history命令(查看linux的shell执行命令记录)
    CMT2380F32模块开发20-射频收发例程
    08-图8 How Long Does It Take
    文档管理系统:攻克这3个痛点,解决80%企业文档管理难题
    关于看病报销额度
  • 原文地址:https://blog.csdn.net/weixin_43872169/article/details/127014827