zoukankan      html  css  js  c++  java
  • 6.3Pytyhon文件的操作(三)

    目录

    前言

    这是相续上两篇6.1Python文件的操作(一)6.2Python 文件的操作的第三篇文章。

    也是Python文件操作的最后一篇文章。

    (一)文件的创建

    (1)说明:

    需要导入的是os模块,mkdir()方法

    (2)源代码:

    # 导入模块
    import os
    # 创建一级目录:创建test文件夹
    os.mkdir("test")
    

    (3)输出效果:

    01.png

    (二)文件的删除

    (1)说明:

    os.remove() 删除具体文件

    os.rmdir() 只能删除空的文件夹

    os.removedirs () 递归的删除,先删除了里面的文件夹,后删除外面的文件夹

    (2)源代码:

    import os
    
    # 删除文件 os.remove("文件路径")
    os.remove("aa.txt")
    
    # 删除空的文件夹
    os.rmdir("Demo")
    # 仅仅删除one1文件夹
    os.rmdir("test/one1")
    
    # 同时删除one文件夹和one下的one2文件夹
    os.removedirs("one/one2")
    

    (3)输出效果:

    aa.txt 文件被删除

    Demo 文件夹被删除

    test里的ones1被删除

    one文件夹与其下的ones2文件夹被删除

    (三)文件的重命名

    (1)说明:

    os.rename() 既可以重命名文件,又可以重命名文件夹

    os.rename() 同时给文件夹和文件夹下的文件重命名

    (2)源代码:

    import os
    
    # 将a.txt重命名为aa.txt
    os.rename("a.txt", "aa.txt")
    
    # 将test目录重命名为Demo
    os.rename('test', "Demo")
    
    # 同时修改目录和目录下的文件的名称
    one/01.txt -> two/02.txt
    os.renames("one/01.txt", "two/02.txt")
    

    (3)输出效果:

    文件a.txt 变成 aa.txt

    文件夹text 变为Demo

    文件夹one与01.txt 变成 two 与 02.txt

    (四)文件的查看

    (1)说明:

    os.getcwd() 获取当前的文件路径

    os.listdir() 获取当前文件的目录,也可以指定哪个文件

    os.chdir() 切换文件目录

    (2)源代码:

    import os
    
    # 获取当前的文件路径
    result = os.getcwd()
    print(result)
    # 获取当前文件的目录,也可以指定
    content = os.listdir()
    print(content)
    
    # 切换文件目录
    os.chdir("two")
    
    # 再次输出文件路径
    result = os.getcwd()
    print(result)
    # 再次获取文件的目录
    content = os.listdir()
    print(content)
    

    (3)输出效果:

    02.png

    (五)文件的复制

    1.小文件的复制

    (1)说明:

    思路:从一个文件读取出来,再写到另一个文件。

    (2)源代码:

    """
        小文件复制,一次性读,一次性写,占用内存小的
    """
    # 打开文件
    source_file = open("read.txt", "r", encoding="utf-8")
    new_file = open("writer.txt", "w", encoding="utf-8")
    
    # 操作文件
    content = source_file.read()
    new_file.write(content)
    
    # 关闭文件
    source_file.close()
    new_file.close()
    

    (3)输出效果:

    07.png

    2.大文件的复制

    (1)说明:

    考虑到在读写的时候加载到内存的空间有限,在复制大文件的时候,不可能一次性写完。

    思路:先取一部分内容,写进去,再循环的写,直到写完。

    (2)源代码:

    """
        大文件复制,循环来读取,每一次来读指定的字节。
    """
    # 打开文件
    source_file = open("read.csv", "r", encoding="utf-8")
    new_file = open("writer.txt", "w", encoding="utf-8")
    
    # 操作文件
    
    while True:
        # 2.1 每一次读取1024字节
        content = source_file.read(1024)
        if content == "":
            break
        new_file.write(content)
    
    # 关闭文件
    source_file.close()
    new_file.close()
    

    (3)输出效果:

    08.png

    (六)文件的实战案例

    1.文件的分类

    (1)说明:

    现在有一个需求:再一个文件夹下,又许多杂乱的文件,小张就想给它整理分类一下;

    shutil.move(olddir,newdir) 移动文件

    整理前的文件

    03.png

    (2)源代码:

    """
        把文件分类,并且分类后放在指定的文件夹
    """
    import os
    # 移动文件所有的库
    import shutil
    
    # 1.遍历所有的文件(文件名称)
    # 1.1获取文件
    file_list = os.listdir("files")
    # print(file_list)
    
    # 切换路径
    os.chdir("files")
    
    # 2.分解文件的路径
    for file_name in file_list:
        # 判断是否是C文件
        if ".c" in file_name:
            if not os.path.exists("C_source"):
                os.mkdir("C_source")
            shutil.move(file_name, "C_source")
            
        # 判断是否是txt文件
        elif ".txt" in file_name:
            if not os.path.exists("txt文件"):
                os.mkdir("txt文件")
            shutil.move(file_name, "txt文件")
            
        # 判断是否是jpg文件
        elif ".jpg" in file_name:
            if not os.path.exists("jpg图片文件"):
                os.mkdir("jpg图片文件")
            shutil.move(file_name, "jpg图片文件")
    

    (3)输出效果:

    04.png

    2.文件的清单查看

    (1)说明:

    现在小张想看整理好后的文件,具体有哪些文件,看一看他的详细分布。

    (2)源代码:

    import os
    
    # os.chdir("files")
    
    # file_list = os.listdir()
    # print(file_list)
    
    
    # 利用递归来实现
    def list_file(dir):
        # 获取当前列表清单
        file_list = os.listdir(dir)
    
        # 遍历当前目录
        for file_name in file_list:
            # 加上相对路径
            new_file = dir + "/" + file_name
            # 判断是否是文件夹
            if os.path.isdir(new_file):
                print(file_name)
                # 是文件夹,递归调用函数
                list_file(new_file)
            # 不是文件夹,直接输出
            else:
                print("	" + file_name)
        # 添加换行
        print("")
    
    
    list_file("files")
    

    (3)输出效果:

    05.png

    (4)附加功能:

    也可以把输出的内容写到txt文件。

    源代码:

    import os
    
    
    # 利用递归来实现
    def list_file(dir, file):
        # 获取当前列表清单
        file_list = os.listdir(dir)
    
        # 遍历当前目录
        for file_name in file_list:
            # 加上相对路径
            new_file = dir + "/" + file_name
            # 判断是否是文件夹
            if os.path.isdir(new_file):
                file.write(new_file + "
    ")
                # 是文件夹,递归调用函数
                list_file(new_file, file)
            # 不是文件夹,直接输出
            else:
                file.write("	" + file_name + "
    ")
        # 添加换行
        file.write("
    ")
    
    
    files = input("请输入要查看的文件:")
    file_txt = input("请输入要写到的txt文件名称:")
    file = open(file_txt + ".txt", "a", encoding="utf-8")
    list_file(files, file)
    

    输出效果:

    06.png

    作者:Mark

    日期:2019/02/10 周日

  • 相关阅读:
    VS2019正式版 密钥 Visual Studio 2019 破解 激活码 Key
    关于随机数的前世今生
    木兮的纪中集训感想
    浅谈欧洲算法——模拟退火
    你没听过的梅森旋转算法
    二分贪心杂题
    DP专项训练
    实验八 进程间通信
    实验七 信号
    实验六 进程基础
  • 原文地址:https://www.cnblogs.com/zyg123/p/10359156.html
Copyright © 2011-2022 走看看