GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • 莫烦PYTHON
  • 学习 ▾
  • 推荐学习顺序
  • 交互式学Python
  • 多进程 multiprocessing
  • 多线程 threading
  • 窗口视窗 Tkinter
  • 有趣的机器学习
  • 强化学习 Reinforcement Learning
  • 进化算法 Evolutionary Algorithm
  • Tensorflow
  • PyTorch
  • Theano
  • Keras

This view

  • Original page
  • New address

GeezerVison is showing mofanpy.com — 文件目录管理 | 莫烦Python

  • 支持

📢

莫烦有新起点啦!「莫烦 x 无限可能」— 关于 AI、行业、产品、教育的经验思考,欢迎来新站看看 →

« 读写文件 正则表达式 »

文件目录管理

作者: 莫烦 编辑: 莫烦 发布于: 2021-05-02

在Python中,你少不了会遇到读写文件,判断目录等问题。我们现在已经有了读写文件的基础。 现在我们玩点更高级的,用Python中提供的 os 库来做文件操作。

这一节主要涉及到的功能:

  • 文件目录操作
    • os.getcwd()
    • os.listdir()
    • os.makedirs()
    • os.path.exists()
  • 文件管理系统
    • os.removedirs()
    • shutil.rmtree()
    • os.rename()
  • 文件目录多种检验
    • os.path.isfile()
    • os.path.exists()
    • os.path.isdir()
    • os.path.basename()
    • os.path.dirname()
    • os.path.split()

os库¶

os库是Python自带的一个非常有用的模块。如果你做一个系统性的东西,要处理文件输出,读入等问题, 那么你有80%概率会使用到os库中的一些功能。 os模块有非常多功能,我们今天就来侧重将一些你日常会经常使用的。

文件目录操作¶

首先你得知道你在哪?此话怎讲?我当然知道我在那,就在电脑面前做着不可描述的事。 NONONO,我指的是你的当前目录是在哪。当你运行一个程序的时候,通常而言当前目录就是你运行这个程序的目录。 那我们来找找在这个交互式学Python的环境中,你的当前目录是哪?

为了方面我们的后续操作,我还是单独创建一个文件夹,让我们在这个文件夹中做练习吧。 下面我会创建一个 project 的文件夹,后面这个 exist_ok 的意思是当我检测到这个目录存在, 我就睁一只眼闭一只眼,当没事发生,不然这句指令会报错的。 不信你试试,点三次执行,第一遍不填 exist_ok(默认为False), 第二遍也不填(给你报错), 第三次填 exist_ok=True,第三次就不报错了。而且在创建完之后,我们也可通过 os.path.exists("project") 来检测是否真的存在这个东西。

你有没有发现,我们无意见又使用了 os 的一个子模块 path,这个子模块也是很有用的,后面我们会详细介绍。

文件管理系统¶

下面我们来以文件管理系统里面会遇到的情况举例。比如用户注册了我这个系统,我得为这个用户创建一个他的文件夹。

如果用户注销了,我是不是得把它的文件夹删掉?

但是情况越来越复杂,如果你的文件夹里有文件,不为空,就会报错的。

这怎么办呢?把文件一个个删了?太费事了吧,其实这种事情,需要用到另一个库,名字叫做 shutil,但是你要注意的是, 这个库太强大了,如果你不小心删掉了其他东西,那就真没了,一定要小心!它可以清空整个目录。

随着你的文件系统越来越厉害,你得应付不同用户的不同需求,比如改名字。

文件目录多种检验¶

有了用户目录,还有很多事情是需要判断的,比如有没有某个文件呀,文件路径的一些便捷操作呀。 下面我先建一个文件,然后再对其进行一些鉴别。Python里的 os.path 真的也是非常容易接触到的一个内容。 光是判断这是否是一个文件或者是否是一个文件夹,都有很多种不同的判断方式。

在很多时候,我们的文件是通过传参传进来的,比如我随便告诉你一个文件目录,我想为这个文件创建一个副本,我就得用到三个功能,

  1. 先拿到文件名 os.path.basename
  2. 再拿文件夹名 os.path.dirname
  3. 为副本重命名
  4. 把目录重新组合 os.path.join

或者,还有个更方便的功能代替拿文件名和文件夹名的工作:

当然 os 和 os.path 都还有非常多有关于文件和文件夹的操作,我只提到了比较重要和常用的内容。 今后如果你发现你的文件操作要经历更复杂的手法,你再去搜一搜,就更容易理解啦。


降低知识传递的门槛

莫烦经常从互联网上学习知识,开源分享的人是我学习的榜样。 他们的行为也改变了我对教育的态度: 降低知识传递的门槛。

我组建了微信群,欢迎大家加入,交流经验,提出问题,互相帮持。 扫码后,请一定备注"莫烦",否则我不会同意你的入群申请。

wechat
« 读写文件 正则表达式 »
    教程目录

    交互式学Python

      介绍

    • 课程介绍

      基础功能

    • 变量与运算

      循环、数据、判断

    • 条件判断
    • for 和 while 循环
    • 数据种类

      函数、类、模块

    • Function 函数
    • Class 类
    • Module 模块

      文件管理

    • 读写文件
    • 文件目录管理
      • os库
      • 文件目录操作
      • 文件管理系统
      • 文件目录多种检验
    • 正则表达式
    • pickle/json 序列化

      异常检查和处理

    • 如何控制异常 try-except
    • 单元测试

      做个项目

    • 没啥用计算器
    • 文件批量处理

      高阶内容

    • 字符串的高级玩法
    • Python的偷懒用法
    • 复制的"玄学"
    • 为什么要有生成器
    • 套娃的装饰器
    • Python 安装和依赖管理:Conda/Pip
    • Python编辑器

      进阶学习

    • 多线程多进程
    • Python 窗口部件
    • 数据三剑客 Numpy Pandas Matplotlib
    • 数据采集-爬虫技术
    You are visitor 01402503 — GeezerVison does not store the pages you look up.
    Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.