闲话python-36:文件系统操作

我们编写的python程序既可能在Windows下运行,也有可能在Linux和Mac OS下运行,一般的操作对于跨平台而言问题都不大,而文件系统的相关操作在不同的平台上是具有较大差异的。我们当然可以使用python中system函数或者popen函数运行终端指令,但是这样就破坏了跨平台的兼容性。

如果确认自己的程序只在一种平台上运行,这样处理也是可以接受的,如果自己的程序需要跨平台运行,那么关于文件系统的相关操作最好使用os模块中封装的系列函数完成。本文就讨论一下python中封装的文件系统相关操作,以便使所开发的代码具备跨平台的兼容性。

1. 信息查看

在bash中我们常常运行pwd指令查看当前目录,运行ls指令,查看当前目录下的文件和子目录,也会使用一款工具tree来查看指定目录下的所有子目录和文件。在python中封装了这个三种功能到三个函数中,分别是:os.getcwd(), os.listdir(), os.walk()。其中os.walk()函数返回的是一个迭代对象,迭代对象的每一个元素为一个三元元组,第一个位置保存目录,第二个位置保存子目录列表,第三个位置保存文件列表。该函数递归获取指定目录下的所有子目录和文件路径。

闲话python-36:文件系统操作

2. 修改目录和文件

(1) 改变工作目录

在shell中,常常使用cd指令改变当前的工作目录,python封装了os.chdir()函数来实现这个功能。

闲话python-36:文件系统操作

改变工作目录

(2) 路径拼接

使用过Windows和Linux的朋友应该知道,这两个操作系统中文件路径的分隔符是不一样的,这在操作文件系统时是一件令人烦躁的地方,所幸python封装了一个函数来解决这个问题。使用os.path.join()函数来连接路径的各个部分,则可以得到一个操作系统对应的合法路径。

闲话python-36:文件系统操作

路径拼接

(3) 创建目录

在终端中,我们常常用mkdir -p指令来创建目录,在python中就可以使用os.makedirs()函数来创建目录。

闲话python-36:文件系统操作

创建目录

(4) 拷贝文件

在终端中,我们使用cp指令来拷贝文件或目录,在python中可以使用shutil.copy2函数来拷贝。

闲话python-36:文件系统操作

拷贝文件

(5) 移动或重命名文件

在shell中,我们使用mv指令来移动文件或目录,或者修改文件名,在python中可以使用shutil.move来实现。

闲话python-36:文件系统操作

移动或重命名文件

(6) 删除文件

python中提供了os.remove函数来完成shell中的rm指令对应的删除文件的功能。

闲话python-36:文件系统操作

删除文件

(7) 删除目录

如果需要删除目录,在终端中,我们会使用rm -r指令完成,在python中可以使用shutil.rmtree实现这种需求。

闲话python-36:文件系统操作

删除目录

3. 文件读写

除上述的文件系统操作外,还有一类文件操作,即文件读写。python使用open函数打开文件获得一个迭代对象,然后通过对这个迭代对象进行遍历来读取文件内容。通过向open函数传参来控制读方式打开还是写方式打开。

闲话python-36:文件系统操作

读写文件

到此,对python中文件系统相关的操作讨论完毕。本文在写作之前,参考英文网页链接如下:https://towardsdatascience.com/10-python-file-system-methods-you-should-know-799f90ef13c2 。本文的notebook版文件在github上的cnbluegeek/notebook仓库中共享,欢迎感兴趣的朋友前往下载。


分享到:


相關文章: