你应该知道的10个Python文件系统方法
前言
大家可以编写Python程序来与文件系统进行交互,以完成一些很酷的工作。然而如何做到这一点并不总是非常清楚。本文将重点介绍10个基本的os操作和shutil命令,这样您就可以编写脚本来自动化与文件系统的交互。os模块是与操作系统交互的主要Python模块。shutil模块还包含高级文件操作。一般而言,您可以使用os创建目录,但使用shutil移动和复制它们。
文件系统有点像一个房子。假设你在大扫除,需要把一箱箱的笔记本从一个房间搬到另一个房间。
这些方框就像目录,里面是文件。文件就像档案。你可以给他们进行读和写也可以将它们放在目录框中。
获取信息
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()来遍历目录及其子目录的内容通常很有用。例如,下面的代码将打印当前工作目录的目录和子目录中的所有文件。
import os
cwd = os.getcwd()
for dir_path, dir_names, file_names in os.walk(cwd):
for f in file_names:
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命令参考:见文末阅读原文。
- listview动态获取数据
- toggbutton
- android软件开发之webView.addJavascriptInterface循环渐进【一】
- android的listview item点击详解
- android之surfaceview画图
- viewgroup实现item拖动效果
- Android之ExpandableListView下拉分组的实现
- 粗略的物体碰撞预测及检测
- Regionserver频繁挂掉故障处理实践
- 【翻译】GeoJSON格式规范-RFC7946
- [机器学习]-[数据预处理]-中心化 缩放 KNN(二)
- 基于Spring Cloud 几行配置完成单点登录开发
- 深入浅出全栈工程师: Web编程基础
- android之动画popowindows
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Skywalking Php注册不上问题排查
- 第4章代码-图形几何变换
- 第5章代码-三维观察
- 我的2020 九月iOS面试秘籍,为你的跳槽保驾护航
- SAP Spartacus layout设计原理
- Angular依赖注入的一个例子和注入原理单步调试
- Angular依赖注入的一个常见错误NullInjectorError,No provider for XXX
- Redis系列(十二)scan Info Object等特殊命令集合
- 使用纯CSS给网站文章中的外链添加小图标
- iOS美团同款"ZSource"二进制调试实现
- 使用picocm来进行Linux下的串口调试
- vue-drawer-layout实现手势滑出菜单栏
- iOS面试之UI大全
- 基于Ant Design Vue封装一个表单控件
- Rust闭包的虫洞穿梭