python 多层包多模块_Python OS模块简介

4170f916ef4e8bc55b73099a79e1c943.png

在本教程中,我们将学习怎样使用Python中的os模块。

目录表

  1. 简介

  2. 基本函数

  3. 列出当前工作目录的文件/目录

  4. 改变工作目录

  5. 创建单个和嵌套目录结构

  6. 递归删除单个和嵌套目录结构

  7. 数据处理实例

  8. 结论

简介

Python是近年来用于数据处理、数据分析和网站构建等各种任务的最常用语言之一。在处理这些任务的过程中,有许多任务依赖于操作系统。Python允许开发人员通过Python中的os模块使用多个依赖于操作系统的功能。这个包抽象了平台的功能,并提供了相关python函数来导航、创建、删除和修改文件和文件夹。在本教程中,你将了解如何导入这个包、它的基本功能以及使用这个库执行数据合并任务的python示例项目。

基本函数

我们通过一些实例代码来学习一下这个模块。

导入库:

34f8ebd4f5e0589b0db84e9164bee58e.png

我们来获取本模块可以使用的方法列表:

29926e91a38d588ec940c0e3b249a69c.png

输出:

0fcce9e783e7e6cdd79174094a16b54f.png

现在,使用getcwd方法我们可以获取当前工作目录路径。

538bc97cdc6c43e4b5e9e7fdb25c7b53.png

输出:

c0108e5670250d9bd155d6dcd54aa716.png

列出文件夹和文件

我们使用 listdir 来列出当前目录的文件夹/文件:

ccd6a4bf5c5e277b3240380efbc5b894.png

输出:

c5a67fa653bff96c667a57613b03ff94.png

如你所看到的,我有两个文件夹: Data  和 Population_Data ,三个文件: README.md markdown 文件, 以及两个名为 tutorial.py 和 tutorial_v2.py的Python文件。

为了获取我的项目文件夹的树形结构,我们来写一个函数,使用 os.walk() 来迭代当前目录下每个文件夹中的所有文件。

6104bce35674ad2b73060f8bdb9b98dc.png

在当前工作路径中调用这个函数,当前路径可以通过之前学习的函数得到:

569d41248667282beb06b92d4d5386a1.png

输出:

a5e9e19f13d9cc8b07c40990250ef449.png

备注:为方便起见,只截取输出一部分。

从输出中可以看到,文件夹的名称以一个  / 结尾,文件夹中的文件向右缩进了四个空格。Data 文件夹中有一个名为  uscitiesv1.4.csv  的csv文件。这个文件包含了美国每个城市的人口数据。Population_Data  文件夹保存所有州的数据,其中包含从  uscitiesv1.4.csv  中提取的每个州的人口数据的独立csv文件。

改变工作目录

我们来改变工作目录,进入到包含 “New York”州数据的目录。

33825e5ecf584e8e1a8104c4ce43a6e2.png

现在,我们在这个目录中再次运行  list_files  方法。

d43dd400ec27645febdabf2d2a98483a.png

输出:

f7956b26a130a74d62c3a8137ae8f370.png

如你所见,我们进入了  Population_Data  文件夹下的  New York  文件夹。

创建单个和嵌套目录结构

现在,我们在这个目录中创建一个名为  testdir  的新目录。

c9c065a95c0597fb44566407a1b2d424.png

636ab885705522a1185bbe23377ee9f4.png

输出:

3d56b8ff5a9e7792de49f03631bb118d.png

如你所见,它在当前工作目录中创建了一个新目录。

我们来创建一个两层嵌套的目录。

6623b172ac31a77d790bf19709f7e28d.png

输出:

99487196fb576d13045d2f2805825de6.png

我们得到一个错误。具体来说,我们得到一个 FileNotFoundError 错误。你可能想知道,当我们试图创建目录时,为什么会产生一个 FileNotFound 错误。

原因:Python模块寻找一个名为 level1dir 的目录来创建 level2dir 目录。因为 level1dir 不存在,所以它首先抛出一个 FileNotFoundError错误。

对于这样的目的,我们可以使用 mkdirs() 函数来代替,它可以递归地创建多个目录。

8df9311a766b36d0fd1c93ed157fc481.png

查看当前目录树。

148d47343d844ea5d93c8e5d19621664.png

输出:

6b1e85cfd83ce0c3540701056d1fdc0f.png

可以看到,现在在 New York 文件夹下有两个子目录:testdir 和 level1dir。level1dir下面有一个名为level2dir 的目录。

递归删除单个和多层目录

os 模块也有修改或删除目录的方法,我将在这里演示。

现在,让我们来使用 rmdir 删除刚才创建的目录:

135cb2ac2605fae6375650d25ffe7e80.png

查看当前目录树来确认此目录已经不存在:

e2d4c9905e789149e5acdd40ec7bc9ed.png

输出:

dbae3a347d8fb398f5b725d8d6863f13.png

你可以看到,testdir  目录已经被删除。

我们来尝试删除嵌套目录树 level1dir 和 level2dir。

0ef9dd4dac4420d879b7387e365e0d8d.png

输出:

9e498c6bda7e1f82d9bf096930518052.png

正如所见,这里抛出了一个 OSError,这是正确的。它提示 level1dir 目录不是空的。这是正确的,因为它下面有 level2dir。

使用 rmdir 方法不可能删除非空目录,类似于Unix命令行版本。

就像 makedirs() 方法一样,我们试一下 rmdirs(),它可以递归地删除树结构中的目录。

d889f306350895267604cf5c96e7c5f9.png

我们再来看一下树结构:

886595456ee5e8167c5e3661093f0b44.png

输出:

ad255f10d45e1635eaefa4668ef3621e.png

它返回前一个目录的状态。

数据处理实例

到目前为止,我们已经研究了如何查看、创建和删除嵌套目录结构。现在我们来看一个 os 模块如何帮助数据处理的例子。

为此,我们在目录结构中向上一层。

14edfcc6b88b02eb537d7b400bf1ff40.png

这一步操作之后,我们再来查看一下目录树结构。

b04fee05ccf9c2ea5e551f4199213eb1.png

输出:

3d43d554f2d2e68a39790cb0784ffc6a.png

备注:为了简便起见,只截取输出一部分。

我们通过遍历每个州的目录并合并CSV文件来合并所有州的数据。

fc23a6dd349d39f5d62b8b6205f4adb4.png

由于 os 模块的部分原因,我们能够创建  merge_data,这是一个包含来自每个州的人口数据的数据帧。

结论

在本文中,我们简要地探讨了Python内置 os 模块的不同功能。我们还看到了一个简单的例子,说明如何在数据科学和分析领域中使用该模块。很重要的一点是,要了解 os 还提供了很多的功能,并且可以根据开发人员的需要构建更复杂的逻辑。

英文原文:https://stackabuse.com/introduction-to-python-os-module/ 译者:忧郁的红秋裤
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值