在编写一些Python程序的时候,我们常常需要与文件系统进行交互。本文为大家整理了10个常用的相关命令,涉及查看信息、更改信息、删除文件等,并提供了相应的终端命令,帮助大家更高效地对文件系统及其中的文件内容进行操作。
通过一个能够实现与文件系统进行交互的Python程序,我们可以实现很多有趣的应用,但是大部分人并不知道如何实现这种交互。
os模块主要用于与操作系统交互,shutil模块则包含一些针对文件的操作。一般情况下,我们使用os创建目录,使用shutil移动和复制文件。
一、获取信息(Get Info)
- os.getcwd():以字符串形式获取当前工作目录路径 → pwd
- os.listdir() :以字符串列表的形式获取当前工作目录的内容→ls
- os.walk(“starting_directory_path”):返回一个生成器(generator),该生成器包含当前目录和所有子目录中的文件名称及路径信息;→没有完全等价的shell命令,不过ls -R 命令提供了子目录名称和子目录中的文件名称
二、更改信息(Change Things)
-
os.chdir("/absolute/or/relative/path"):更改当前的工作路径→ cd
-
os.path.join():创建路径供后续使用→ 没有等效的命令
-
os.makedirs(“dir1 / dir2”):创建目录→ mkdir - p
-
shutil.copy2(“source_file_path”,“destination_directory_path”):复制文件或目录→ cp
-
shutil.move(“source_file_path”,“destination_directory_path”):移动文件或目录→ mv
-
os.remove(“my_file_path”):删除文件→ rm
-
shutil.rmtree(“my_directory_path”):删除路径及其包含的所有文件和目录→ rm –rf
以上是对十个最常用、基础的文件系统方法的初步介绍,接下来我们再深入讲解一些重要的模块和使用方法。
以字符串列表形式返回当前目录
os.walk("my_start_directory")
创建一个生成器,用于返回关于当前目录和子目录的信息。在起始指定的目录中有效。
os.walk() 遍历包含的每个目录后,都会返回下列项:
(1)当前目录路径(字符串类型)
(2)当前目录下的子目录名称(字符串列表类型)
(3)当前目录中的文件名称(字符串列表类型的)
os.walk
使用带有for循环的os.walk()来遍历目录及其子目录的内容通常很有用。例如,下面的代码将打印当前工作目录的目录和子目录中的所有文件。
import os
cwd = os.getcwd()
for dir_path, dir_names, file_names in os.walk(cwd):
for f in file_names:
print(f)
以上是获取信息的操作。下面让我们一起看一下更改工作目录或移动、复制、删除文件系统的命令。
以上是获取信息的操作。下面让我们一起看一下更改工作目录或移动、复制、删除文件系统的命令。
os.chdir("/absolute/or/relative/path")
此方法将当前工作路径更改为绝对路径或相对路径。
如果随后要对文件系统进行其他更改,在试用该方法时留意处理任何异常。否则,您可能正在删除不希望删除的目录或文件。
os.path.join()
os.path.join()
os.path模块提供了许多用于路径名操作的有用方法。您可以使用它查找有关目录名称,或者目录名称的部分信息。该模块还可以用来检查文件或目录是否存在。
os.path.join()
提供将多个字符串完美连接在一起的文件路径,而且是在大多数操作系统上都可以工作的路径。该模块文档的描述为,该命令可以“更加智能的连接一个或多个路径组件,返回值是路径或路径的任何成员路径的连接,每个非空路径后都有一个目录分隔符(os.sep),最后一个除外”。
另外,如果使用的是Unix或macOS系统,os.path.join()会在每个字符串之间添加一个斜杠(" / ")来创建路径。如果操作系统需要“\”,那么join会自动使用反斜杠。
os.path.join()还向其他开发人员提供了创建路径的明确信息。强烈建议读者多使用这个命令,不要每次都手动添加斜杠。
os.makedirs("dir1/dir2")
os.makedirs()能够生成目录。mkdir()方法也可以生成目录,但它不生成中间目录。所以建议使用os.makedirs()。
shutil.copy2("source_file", "destination")
在Python中复制文件和目录的方法有很多,但建议使用此命令。shutil.copy2()的优势在于,它尽可能地保留了源文件的元数据。
使用shutil.move()更改文件的位置。它使用 copy2 作为后台参数默认值。
shutil.move("source_file", "destination")
当需要删除文件时,可以使用os.remove()工具。
os.remove("my_file_path")
shutil.rmtree() 删除一个目录及其中的所有文件和目录。 慎用!