在处理文件系统时,掌握操作系统提供的各种功能至关重要。Python 的 os
模块提供了丰富的工具来操作文件和目录。本文将介绍如何使用 os
模块中的关键函数,包括获取、更改当前工作目录、列出目录内容、创建与删除目录、重命名文件或目录以及检查文件或目录的存在性等。
1.使用"os.getcwd()"获取当前工作目录
- 在编写脚本或程序时,了解当前工作目录非常重要。这有助于定位文件或设置正确的路径。
import os
current_directory = os.getcwd()
print(f"当前工作目录: {current_directory}")
当前工作目录: /path/to/your/directory
- 解释:"os.getcwd()"函数返回当前工作目录的路径。这对于调试或确保脚本按预期工作非常有用。
2.使用"os.chdir()"更改当前工作目录
- 有时候我们需要在不同的目录之间切换,这时可以使用"os.chdir()"函数。
import os
os.chdir("/path/to/new/directory")
new_directory = os.getcwd()
print(f"新的工作目录: {new_directory}")
新的工作目录: /path/to/new/directory
- 解释:"os.chdir()"接受一个字符串参数,表示要切换到的新目录。之后可以通过"os.getcwd()"确认是否成功切换。
3.使用"os.listdir()"列出目录内容
import os
files = os.listdir()
for file in files:
print(file)
file1.txt
subdirectory
another_file.py
- 解释:"os.listdir()"返回一个包含指定目录下所有条目的列表。默认情况下,它列出的是当前工作目录的内容。
4.使用"os.mkdir()"创建新目录
import os
os.mkdir("new_directory")
print("新目录已创建")
新目录已创建
- 解释:"os.mkdir()“用于创建单级目录。如果需要创建多级目录,则需要使用"os.makedirs()”。
5.使用"os.makedirs()"递归创建目录
- 当需要创建多级目录结构时,"os.makedirs()"就派上用场了。
import os
os.makedirs("parent/child/grandchild")
print("多级目录已创建")
多级目录已创建
- 解释:"os.makedirs()"会自动创建所有中间目录,使得创建多级目录变得容易。
6.使用"os.rmdir()"删除空目录
import os
os.rmdir("empty_directory")
print("空目录已删除")
空目录已删除
- 解释:"os.rmdir()“只能删除空目录。如果目录不为空,会抛出"OSError”。因此,在使用这个函数之前,最好先检查目录是否为空。
7.使用"os.removedirs()"递归删除空目录
- 如果需要递归地删除多个空目录,可以使用"os.removedirs()"
import os
os.removedirs("parent/child/grandchild")
print("多级空目录已删除")
多级空目录已删除
- 解释:"os.removedirs()“会递归地删除空目录。如果中间的任何目录不为空,该函数会停止并抛出"OSError”。
8.使用"os.rename()"重命名文件或目录
import os
os.rename("old_name.txt", "new_name.txt")
print("文件已重命名")
文件已重命名
- 解释:"os.rename()"有两个参数:第一个参数是要重命名的对象的当前名称,第二个参数是新的名称。该函数也可以用来移动文件或目录。
9.使用"os.path.exists()"检查文件或目录是否存在
- 在执行文件操作之前,通常需要检查文件或目录是否存在。
import os
if os.path.exists("example.txt"):
print("文件存在")
else:
print("文件不存在")
文件存在
- 解释:"os.path.exists()"返回一个布尔值,表示指定的路径是否存在。这对于避免不必要的错误非常有用。
10.使用"os.path.isdir()"检查是否为目录
import os
if os.path.isdir("example_directory"):
print("这是一个目录")
else:
print("这不是一个目录")
这是一个目录
- 解释:"os.path.isdir()"返回一个布尔值,表示指定的路径是否为目录。这对于确保执行正确的操作非常有用。
11.使用"os.path.isfile()"检查是否为文件
import os
if os.path.isfile("example.txt"):
print("这是一个文件")
else:
print("这不是一个文件")
这是一个文件
- 解释:"os.path.isfile()"返回一个布尔值,表示指定的路径是否为文件。这对于确保执行正确的文件操作非常有用。
12.使用"os.walk()"遍历目录树
- 在处理复杂的目录结构时,"os.walk()"是一个非常强大的工具。
import os
for root, dirs, files in os.walk("."):
print(f"根目录: {root}")
print(f"子目录: {dirs}")
print(f"文件: {files}")
print("\n")
根目录: .
子目录: ['subdirectory']
文件: ['example.txt', 'another_file.py']
根目录: ./subdirectory
子目录: []
文件: ['file_in_subdirectory.txt']
- 解释:“os.walk()“生成一个三元组”(root, dirs, files)”,其中"root"是当前目录的路径,"dirs"是当前目录下的子目录列表,"files"是当前目录下的文件列表。通过遍历这个三元组,可以轻松地遍历整个目录树。
实战案例:自动化备份脚本
假设你需要定期备份某个目录下的所有文件。可以使用"os"模块来实现这个任务。
import os
import shutil
import datetime
source_dir = "/path/to/source/directory"
backup_dir = "/path/to/backup/directory"
if not os.path.exists(backup_dir):
os.makedirs(backup_dir)
timestamp = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
backup_folder = os.path.join(backup_dir, timestamp)
os.makedirs(backup_folder)
for root, dirs, files in os.walk(source_dir):
for file in files:
src_path = os.path.join(root, file)
dst_path = os.path.join(backup_folder, os.path.relpath(src_path, source_dir))
os.makedirs(os.path.dirname(dst_path), exist_ok=True)
shutil.copy2(src_path, dst_path)
print("备份完成")
输出:
备份完成
解释:
- 1.定义源目录和目标目录:指定要备份的源目录和备份的目标目录。
- 2.创建备份目录:如果目标目录不存在,则创建它。
- 3.*获取当前日期时间:使用当前日期时间作为备份文件夹的名称,便于识别。
- 4.创建备份文件夹:在目标目录下创建一个新的子目录。
- 5.复制文件:使用"os.walk()"遍历源目录下的所有文件,并将它们复制到备份目录中。
- 6.完成备份:输出“备份完成”信息。
本文介绍了 Python 中"os"模块的一些常用功能,包括获取和更改工作目录、列出目录内容、创建和删除目录、重命名文件或目录、检查文件或目录的存在性等。此外,还提供了一个实际应用案例——自动化备份脚本,展示了如何利用这些功能来解决实际问题。通过这些知识点的学习,可以更高效地管理和操作文件系统。
总结
- 最后希望你编程学习上不急不躁,按照计划有条不紊推进,把任何一件事做到极致,都是不容易的,加油,努力!相信自己!
文末福利
- 最后这里免费分享给大家一份Python全套学习资料,希望能帮到那些不满现状,想提升自己却又没有方向的朋友,也可以和我一起来学习交流呀。
包含编程资料、学习路线图、源代码、软件安装包等!【[点击这里]】领取!
- ① Python所有方向的学习路线图,清楚各个方向要学什么东西
- ② 100多节Python课程视频,涵盖必备基础、爬虫和数据分析
- ③ 100多个Python实战案例,学习不再是只会理论
- ④ 华为出品独家Python漫画教程,手机也能学习
可以扫描下方二维码领取【保证100%免费】