Python操作文件

使用命令行是程序员的基本功,而使用Python命令行操作文件是运维工程师、测试工程师等职业必备的基本技能,同时也是Python各领域开发方向的工程师所必须掌握的。这是一节有意思而非常实用的内容。

命令行

前面我们已经接触过cd这个命令行,那还有哪些常用的命令行呢?大家打开命令行工具,下面的代码直接在命令行里面输入即可。

打印当前目录(文件夹)的路径

这个当前目录(文件夹)是相对于命令行工具而言的,由于Linux或Mac的文件结构比较复杂,这个命令就很有必要啦

Linux和Mac用户,可以使用 pwd命令:

Windows用户可以使用chdir命令,不过windows命令行工具自带显示完整路径,大家在命令行里输入看下效果,发现用处不大。

 

新建目录(文件夹)

mkdir,使用mkdir+文件名可以在当前目录新建一个文件夹,也可以使用mkdir+一个完整的文件夹路径来新建文件夹。注意命令间的是空格不要漏写啦

注意Windows的路径是右斜杠”\”,而Mac或Linux的路径是左斜杠”/”

 

更改目录(文件夹)

cd更改目录(文件夹)就是改变命令行工具所在的位置,这个是我们在命令行工具最常用的命令之一啦。

意思是进入当前路径下的名称为newdoc文件夹。也可以输入完整的路径,比如:

还可以输入

意思是返回当前目录的上一层。

 

列出目录(文件夹)下的所有文件

在Linux和Mac可以输入ls命令来列出目录(文件夹)下的文件,而Windows则是输入dir命令。

 

删除目录(文件夹)

使用 rmdir命令+文件夹名,可以删除该文件夹

命令行知识拓展

知识拓展部分,了解即可。

使用命令行来对操作系统的文件等进行管理是运维工程师必备的一个基本技能,由于侧重点有限,我们只是列举了一些最常用的命令,更多内容大家可以去阅读一些拓展资料。

文档:Mac 、Linux命令大全以及Shell教程

而Python的File对象、OS模块、shutil模块、glob模块等也能管理操作系统的文件系统,不仅如此Python甚至可以完全取代shell脚本语言。因此这也是为什么Python会成为运维工程师和测试工程师推荐学习的开发语言。

File对象

读文件

首先用VS Code在python-project目录下,新建一个test.txt文件,然后再test.txt文件里输入以下文字内容:

然后我们在python-project目录下新建一个lesson5.py的Python文件,输入以下代码:

我们再来执行看看结果。

写文件

要写文件需要先打开一个文件。

os模块

使用开发者工具在python-project的文件夹下新建一个lesson6.py的文件,然后依次输入以下命令,然后使用命令行执行lesson6.py来看一下效果。

文件所在路径

重命名文件或文件夹

创建文件夹

改变当前路径

删除文件夹

列出当前目录所有文件与文件夹

检验给出的路径是否是一个文件

在python-project文件下新建一个文件或文件夹,命名为”test3″,然后在lesson6.py里输入以下命令:

检验给出的路径是否是一个目录(文件夹)

在python-project文件下新建一个文件或文件夹,命名为”test3″,然后在lesson6.py里输入以下命令:

返回一个路径的目录名和文件名

shutil模块

使用python批量修改文件名、批量新建文件夹等

复制文件

这里的文件不限文件格式,比如我们在python-project放一张名称为“hackwork.jpg”的图片,然后使用开发者工具在python-project文件夹下新建一个lesson6-1.py的Python文件,输入以下代码:

 

复制文件夹

我们在python-project文件夹下新建一个文件夹名称为“鸣人”,然后在lesson6-1.py输入以下代码并执行:

执行之后我们会发现在python-project文件夹下就出现了一个“鸣人的影分身”。这个复制文件夹和我们在电脑上操作的复制是一样,如果“鸣人”这个文件夹下有文件,也会一并复制。

 

移动文件或文件夹

比如我们可以把之前建好的hackwork.jpg图片给移动到“鸣人”的文件夹下:

glob模块

模块提供了一个函数用于从目录通配符搜索中生成文件列表,比如我们想知道python-project文件夹下有哪些Python文件,我们可以在lesson6.py输入以下代码:

上面的”*”是通配符,用来模糊搜索文件,而“*.py”的意思就是模糊搜索所有Python文件。如果你是想搜索文件夹下所有jpg图片或mp3音频格式可以用”*.jpg”或”*.mp3″,如果你想搜索文件名包含某个单词字母,或者某个汉字,可以看下面案例

最终会返回所有满足条件的文件路径的一个列表List类型,既然是一个列表格式,那我们就可以打印列表里某个位置的文件名啦