最新公告
  • 欢迎您光临码农资源网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!加入我们
  • python文件和目录操作

    我们平时在电脑上操作(读,写,删除,复制等等)文件和目录,主流的操作系统(带界面的
    linux 系统,mac 系统,windows 系统等等)不但都有提供友好的可视化操作,也提供命令行操作。

    无论是可视化操作还是通过命令行操作,最终都是转化为程序调用操作系统的 API 函数对文件和目录进行操作。

    windows 和 linux 命令行操作文件和目录

    如果我们要操作文件或目录,可以在命令行下面输入操作系统提供的各种命令来完成,比如 linux下的 pwd 显示当前路径,
    ll 和 ls 显示当前目录下的文件和文件夹,rm 删除文件,mv 移动文件等等。

    Windows 下的 dir 命令显示当前目录下的文件和文件夹,copy 复制文件,move 移动文件,del 删除当前路径下的文件等等。

    对于操作系统提供的操作文件和目录的命令,大家用到时可以自行搜索,我们下面重点学习如何用 Python 提供的函数来操作文件和目录。

    Python 操作文件的函数

    我们可以使用 Python 内置的 os 模块提供的函数来检查一个文件是否存在。

    import os
    
    flag = os.path.exists("d:/test.txt")
    print(flag)  # 如果文件存在返回 True,否则返回 False

    我们上节课学习的写文件操作中,可以用标识符 ‘w’ 打开一个不存在文件,我们可以使用这种方法来创建一个文件,
    但要注意,我们最好在创建文件时检查一下是否存在有重名的文件,如果存在就不要创建,否则的话会把原来的文件给冲掉。

    import os
    
    if not os.path.exists("d:/test.txt"):  # 如果文件不存在
        f = open("d:/test.txt", "w")       # 在 d 盘下创建一个 test.txt 文件
        f.close()
    else:
        print("文件已存在,请换个文件名")

    我们可以使用 Python 内置的 os 模块提供的函数来删除一个文件,如果删除的文件不存在 Python 解释器会报异常。

    import os
    
    if os.path.exists("d:/test.txt"):  # 如果文件存在
        os.remove("d:/test.txt")       # 删除 d 盘下的 test.txt 文件
    else:
        print("要删除的文件不存在")

    我们可以使用 Python 内置的 os 模块提供的函数来给一个存在的文件重命名,要确保被命名的文件存在以及新命名的文件名不存在,否则Python 解释器会报异常。

    import os
    
    if os.path.exists("d:/test.txt") and not os.path.exists("d:/newtest.txt"):
        os.rename("d:/test.txt", "d:/newtest.txt")
    else:
        print("不存在该文件或重命名的文件名已存在")

    我们还需要对文件进行拷贝,移动等等操作,后面我们会介绍更高级的模块来完成这些操作。

    Python 操作目录的函数

    我们可以使用 Python 内置的 os 模块提供的函数,查看当前文件所在目录的全路径。

    import os
    
    print(os.path.abspath("."))

    我们可以使用 Python 内置的 os 模块提供的函数,在已经存在的目录下创建一个新目录。

    import os
    
    os.mkdir("d:/test/tt")  # 要确保 d:/test/ 目录存在,否则会报异常

    我们可以使用 Python 内置的 os 模块提供的函数,删除一个存在的空目录(该目录下没有文件和目录)。

    import os
    
    os.rmdir("d:/test/tt")  # 要确保 d:/test/tt 目录下没有文件和目录,否则会报异常

    如何删除一个存在的非空目录以及更复杂的目录操作,后面我们会介绍更高级的模块来完成这些操作。

    Python 操作文件名和目录名的函数

    把目录和文件进行路径拼接时,如果直接拼字符串,我们还要判断操作系统,因为在
    Linux/Unix/Mac 下,os.path.join 函数返回的字符串是用 “/” 衔接的,在 windows 下,os.path.join
    函数返回的字符串是用 “” 衔接的。我们可以使用 Python 内置的 os
    模块的函数进行智能拼接路径。

    import os
    
    filepath = "d:/img"     # 我们在项目开发中一般不会使用绝对路径,在此只是为了举例说明
    filename = "ruhua.png"
    
    '''
    注意:
    1.filepath 中的字符串中的目录不要求在系统中存在,我们拼接的 filepath 和 filename 仅仅只是字符串拼接而已
    2.我们 定义的 filepath 仅仅是在 windows 下做测试,实际项目开发中,我们不会用这种绝对路径的方式,因为我们
    的项目很有可能部署在不同的操作系统上,那样的话我们还要修改连接符 '\' 或者 '/' 来对应我们的操作系统,这
    显然不符合软件工程的理念。
    3.所以下面这条语句在 windows 下会拼接成 "d:/imgruhua.png",在 linux 下会拼接成 "d:/img/ruhua.png",
    我们想要的拼接是字符串 "d:/test" 和 字符串 "ruhua.png" 的拼接,所以实现了智能拼接。
    '''
    print(os.path.join(filepath, filename))

    我们要拆分一个已存在文件或目录的全路径时,也不要直接去拆字符串,我们可以使用 Python 内置的 os
    模块的函数,这样可以把一个路径拆分为两部分放在一个 tuple 里面,tuple 中的第二个值总是最后级别的目录或文件名。

    import os
    
    allfilepath = "d:/img/head/ruhua.png"  # 不要求系统中存在该路径,拆分的仅仅是字符串
    print(os.path.split(allfilepath))      # 返回值为 ('d:/img/head', 'ruhua.png')

    我们可以使用 Python 内置的 os 模块的函数得到文件扩展名,同样我们操作的对象是字符串,并不要求这个路径存在。

    import os
    
    allfilepath = "d:/img/head/ruhua.png"  # 不要求系统中存在该路径,拆分的仅仅是字符串
    print(os.path.splitext(allfilepath))   # 返回值为 ('d:/img/head/ruhua', '.png')

    使用高级模块 shutil 操作文件和路径

    Python 内置的 os 模块只提供基本的文件操作,对于一些复杂的操作,比如对文件的拷贝操作,
    删除非空文件夹等等,我们可以我们可以使用高级模块比如 shutil 模块。

    import shutil
    
    shutil.copy("d:/test.txt", "d:/testcp.txt")  # 拷贝文件
    shutil.rmtree("d:/testdir")  # testdir 是非空文件夹

    当然即使我们不使用 shutil 模块,使用 Python 提供的 os
    模块也可以实现拷贝文件,删除非空文件夹等等所有的对文件的操作,其实 shutil
    模块里面也是调用 os 模块来完成这些复杂的文件操作。

    本节重要知识点

    熟练使用 os 模块对文件和目录进行操作

    熟练使用 shutil 模块以及其它第三方模块对文件进行操作。

    想要了解更多内容,请持续关注码农资源网,一起探索发现编程世界的无限可能!
    本站部分资源来源于网络,仅限用于学习和研究目的,请勿用于其他用途。
    如有侵权请发送邮件至1943759704@qq.com删除

    码农资源网 » python文件和目录操作
    • 7会员总数(位)
    • 25846资源总数(个)
    • 0本周发布(个)
    • 0 今日发布(个)
    • 293稳定运行(天)

    提供最优质的资源集合

    立即查看 了解详情