python文件和目录操作 - vip共享吧
  • 网站首页
  • IT技术笔记
    • Java教程
    • MySql数据库
    • PHP开发
    • Python教程
    • JavaScript
    • SEO优化
    • 常用工具
  • 好资源福利
    • 会员账号共享
  • 网站模板源码
    • 小程序源码
    • 网站源码
  • 共享网络资源
  • 更多功能
    • 留言吐槽
    • 文章归档
    • 我的邻居
    • 史上今日
    • 视频解析
    • 高清壁纸
    • 公告动态
    • 广告合作
    • 关于我们


导航菜单
  • 网站首页
  • IT技术笔记
    • Java教程
    • MySql数据库
    • PHP开发
    • Python教程
    • JavaScript
    • SEO优化
    • 常用工具
  • 好资源福利
    • 会员账号共享
  • 网站模板源码
    • 小程序源码
    • 网站源码
  • 共享网络资源
  • 更多功能
    • 留言吐槽
    • 文章归档
    • 我的邻居
    • 史上今日
    • 视频解析
    • 高清壁纸
    • 公告动态
    • 广告合作
    • 关于我们
Python

python文件和目录操作

2024/9/6 韩俊  Python教程 539 0

我们平时在电脑上操作(读,写,删除,复制等等)文件和目录,主流的操作系统(带界面的 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:/img\ruhua.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 模块以及其它第三方模块对文件进行操作。

点赞:0 分享

上一篇
Python内存操作的文件对象 StringIo 和 BytesIO
下一篇
Python文件处理和输入输出(IO)
作者头像 作者名称 作者性别
韩俊

热门推荐

1 Python异常处理
2 Python3切片
3 Python中hashlib模块详解
4 python3类和对象的概念
5 《Python编程从入门到实践》第3版 影响超250万读者[pdf]
6 Python中HTMLParse模块详解

评论列表

取消回复

    •  
      Login

      韩俊

      趁你现在还有时间,尽你自己最大的努力,努力做成你最想做的那件事,成为你最想成为的那种人,过着你最想过的那种生活。这个世界永远比你想的要更精彩,不要败给生活。

      退出登陆
      • 10072文章
      • 455评论
      • 80微语
  • 广告赞助

  • 二零二五年05月
    一二三四五六日
       1234
    567891011
    12131415161718
    19202122232425
    262728293031 
  • 分类

    • 网站模板源码
    • IT技术笔记
    • 好资源分享
    • 共享网络资源
  • 最新文章

      • 迷雾通:免费使用的VPN软件
        • 任推邦:打造你的赚钱新途径!
          • 任推邦是正规平台吗?任推邦邀请码多少?
            • 京东外卖商户入驻指南及详细入驻攻略
              • git教程及git常用命令指南
                • 女神过生日简短祝福语
                  • 三八祝福语简短优雅点
                    • 事业女性三八祝福语简短
  • 热门文章

    • 酷狗音乐VIP账号 酷狗音乐会员账号共享2017.01.29更新
    • 芒果tv vip会员账号 芒果tv会员账号共享2017.01.29更新
    • 爱奇艺vip账号 爱奇艺/PPS会员账号共享2016.12.12更新
    • 优酷/土豆vip会员账号 优酷会员账号共享2017.01.29更新
    • 活动:免费获得爱奇艺VIP/PPS会员账号50天以上的使用权!
    • 酷我音乐VIP账号 酷我音乐会员账号共享2016.12.31更新
    • 暴风影音会员账号 暴风影音会员账号共享2016.12.31更新
    • m1905会员账号 m1905会员账号共享2016.10.21更新
  • 最新评论

    • https://www.vipshare8.com/content/templates/meta/Static/images/tx/10.jpg

      你丫的 文章写得太好了 支持下!![F3...

    • https://www.vipshare8.com/content/templates/meta/Static/images/avatar.jpg

      很棒!刚在某网站看到这个,很欣赏,可惜下...

    • https://www.vipshare8.com/content/templates/meta/Api/qqtx.php/?qq=3861064027

      呃呃呃 oooo

    • https://www.vipshare8.com/content/uploadfile/202103/thum-490d1614564497.png

      回复了111:根据激活的时间有一年的有效期!

    • https://www.vipshare8.com/content/templates/meta/Api/qqtx.php/?qq=792480561

      到2025就到期了吗?

    • https://www.vipshare8.com/content/uploadfile/202103/thum-490d1614564497.png

      [blockquote]打卡时间:16:...

    • https://www.vipshare8.com/content/templates/meta/Static/images/tx/7.jpg

      俊哥,想借用迅雷一用!但需要手机验证!看...

    • https://www.vipshare8.com/content/templates/meta/Api/qqtx.php/?qq=3293901900

      感谢大大的分享

    • https://www.vipshare8.com/content/uploadfile/202103/thum-490d1614564497.png

      回复了好奥v:如果没有解析成功,可以切换接口...

    • https://www.vipshare8.com/content/templates/meta/Api/qqtx.php/?qq=131241242441

      现在视频解析网站怎么用不了啦?

  • 网站统计 I 当前在线:686人

    • 本站管理:1位
    • 用户总数:591位
    • 置顶文章:2篇
    • 日志总数:10072篇
    • 微语总数:80条
    • 评论总数:455条
    • 标签总数:83条
    • 页面总数:8页
    • 分类总数:14个
    • 链接总数:16条
    • 运行天数:3678天
    • 最后更新:4月27日
    • 登录
    • 注册
    • 找回
    Copyright © 2025vip共享吧网站地图 网站备案豫ICP备19004194号-1

    免责声明:本站资源仅供用于学习和交流,本站部分素材内容来源于网络,如有侵权/投稿等,请及时联系站长.

    • 首页
    • 秒懂百科 秒懂百科
    • 搜索
    • 史上今日

    大家都在搜

    • JavaScript
    • 酷狗会员账号共享
    • 喜马拉雅vip会员共享
    • 最新电影
    • 掌阅vip账号共享
    • 小程序
    • meilisearch
    • 喜马拉雅FM会员账号
    • m1905会员账号
    • 起点vip账号共享
    • VIP电影
    • 优酷vip账号共享
    • Python
    • 经典句子
    • 乐视视频
    • 暴风影音会员账号
    • 
    • 