你应该知道的10个Python文件系统方法

开发 后端
大家可以编写Python程序来与文件系统进行交互,以完成一些很酷的工作。本文将重点介绍10个基本的os操作和shutil命令,这样您就可以编写脚本来自动化与文件系统的交互。

大家可以编写Python程序来与文件系统进行交互,以完成一些很酷的工作。然而如何做到这一点并不总是非常清楚。本文将重点介绍10个基本的os操作和shutil命令,这样您就可以编写脚本来自动化与文件系统的交互。os模块是与操作系统交互的主要Python模块。shutil模块还包含高级文件操作。一般而言,您可以使用os创建目录,但使用shutil移动和复制它们。

文件系统有点像一个房子。假设你在大扫除,需要把一箱箱的笔记本从一个房间搬到另一个房间。

[[324727]]

这些方框就像目录,里面是文件。文件就像档案。你可以给他们进行读和写也可以将它们放在目录框中。

获取信息

1. os.getcwd() 将当前工作目录路径作为字符串获取

等价于macOS/Linux系统的pwd命令

2. os.listdir() 以字符串列表的形式获取当前工作目录的内容

等价于macOS/Linux系统的ls命令

3. os.walk (“starting_directory_path”) 返回一个生成器,其中包含当前目录和所有子目录中的目录和文件的名称和路径信息

os.walk()创建一个生成器,它可以返回关于当前目录和子目录的信息。它通过指定的起始目录中的目录工作。

os.walk()为它所遍历的每个目录返回以下项:

  • 当前目录路径为字符串
  • 当前目录中的子目录名作为字符串
  • 列表当前目录中的文件名作为字符串列表

使用带有for循环的os.walk()来遍历目录及其子目录的内容通常很有用。例如,下面的代码将打印当前工作目录的目录和子目录中的所有文件。

  1. import os 
  2. cwd = os.getcwd() 
  3. for dir_path, dir_names, file_names in os.walk(cwd): 
  4.     for f in file_names: 
  5.         print(f) 

这就是我们获取信息的方式,现在让我们看看更改工作目录或移动、复制或删除文件系统部分的命令。

改变事物

4. os.chdir("/absolute/or/relative/path")

等价于macOS/Linux系统的cd命令

此方法将当前工作目录更改为提供的绝对路径或相对路径。如果您的代码随后对文件系统做了其他更改,那么在使用try-except方法时处理任何抛出的异常都是一个好主意。否则,您可能正在删除不想删除的目录或文件。

5. os.path.join()

os.path模块有许多用于常见路径名操作的有用方法。您可以使用它来查找关于目录名和目录名部分的信息。模块还具有检查文件或目录是否存在的方法。join()的设计目的是通过将多个字符串连接到一个漂亮的文件路径中,创建一个可以在大多数操作系统上工作的路径。

基本上,如果您使用的是Unix或macOS系统,os.path.join()在提供的每个字符串之间加上一个正斜杠(" / ")来创建路径。如果操作系统需要“\”,那么join知道使用反斜杠。join()还向其他开发人员提供了创建路径的明确信息。一定要使用它而不是手动的字符串连接,以避免看起来像一个新手。

6. os.makedirs("dir1/dir2")

等价于macOS/Linux系统的mkdir -p命令

os.makedirs()创建目录。mkdir()方法也创建目录,但它不创建中间目录。所以我建议您使用os.makedirs()。

7. shutil.copy2("source_file_path","destination_directory_path")

等价于macOS/Linux系统的cp命令

在Python中有许多方法可以复制文件和目录。shutil.copy2()是一个很好的选择,因为它试图尽可能多地保留源文件的元数据。

8. shutil.move("source_file","destination")

等价于macOS/Linux系统的mv命令

使用shutil.move()来更改文件的位置。

9. os.remove("my_file_path")

等价于macOS/Linux系统的rm命令

10. shutil.rmtree("my_directory_path")

等价于macOS/Linux系统的rm -rf命令

 

责任编辑:赵宁宁 来源: 今日头条
相关推荐

2018-09-18 10:55:24

人工智能机器学习深度学习

2013-05-20 10:14:42

软件工具项目工具开发工具

2023-01-10 09:24:47

Python编程语言

2018-12-20 14:28:45

程序员开源支付系统

2013-12-02 10:10:35

Python工具库

2021-06-07 12:40:34

Python代码陷阱

2017-01-06 10:07:39

Linuxwindowsatime

2022-04-28 08:41:53

JavaScript数组

2017-06-06 11:59:26

Docker工具容器

2024-11-12 14:56:07

2020-10-14 11:10:52

ES2020JavaScript前端

2020-03-12 09:19:55

前端开发Chrome

2024-08-06 11:40:57

2020-10-18 07:37:24

微前端框架前端

2022-06-29 10:06:27

Webpack优化技巧前端

2020-10-23 19:50:15

ES2020Javascript1前端

2023-12-05 08:02:51

JavaScript字符串功能

2020-04-29 14:30:35

HTTPHTTPS前端

2013-01-09 13:55:43

2011-03-25 15:56:58

点赞
收藏

51CTO技术栈公众号