文件目录管理 - 交互式学Python | 莫烦Python

文件目录管理

作者: 莫烦 编辑: 莫烦 2021-05-02

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

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


降低知识传递的门槛

莫烦很常从互联网上学习知识,开源分享的人是我学习的榜样。 他们的行为也改变了我对教育的态度: 降低知识传递的门槛免费 奉献我的所学正是受这种态度的影响。 通过 【赞助莫烦】 能让我感到认同,我也更有理由坚持下去。