Day09-4【Python I/O编程】操作文件和目录——os模块
我们每天都与文件打交道,文件存储着我们的数据,记录着我们的心情,甚至承载着我们未来的梦想!不过,不是每次都能手动打开文件夹、点击文件。有时,我们需要在代码中来一波操作系统“文件魔术”。那么,如何在Python程序里像操作文件一样“玩转”操作系统呢?那就必须得用到os模块!
我们每天都与文件打交道,文件存储着我们的数据,记录着我们的心情,甚至承载着我们未来的梦想!不过,不是每次都能手动打开文件夹、点击文件。有时,我们需要在代码中来一波操作系统“文件魔术”。那么,如何在Python程序里像操作文件一样“玩转”操作系统呢?那就必须得用到 os
模块!
一、什么是os
模块?
os
模块是 Python 自带的神奇工具,专门用来操作文件、目录,甚至跟操作系统互动。不需要你再手动输入一大堆操作系统命令,所有的命令行功能都能通过 Python 完成。今天,我们就来聊聊如何通过 os
模块和一些操作系统的接口函数,用代码替代繁琐的鼠标点击。
二、看看你正在用哪个操作系统
首先,我们可以使用 os
模块来判断当前操作系统是什么。这个功能看似简单,但却能为接下来的操作奠定基础。
python
import os
# 获取操作系统类型
print(os.name)
-
如果返回
posix
,那就是 Linux、Unix 或者 Mac。 -
如果是
nt
,那就是 Windows 系统。
三、操作系统信息一手掌握
想要查看系统更详细的信息?直接调用 os.uname()
(不过,这个在 Windows 上不适用):
python
import os
print(os.uname())
它会返回一个包含系统信息的元组,像是你电脑的名字、操作系统版本、机器类型等,简直就是“全家福”!不过,Windows 用户请自觉忽略这部分内容哦。
四、环境变量大揭秘
操作系统中定义的环境变量,保存着一些关于你系统的信息,os.environ
就是这个“藏宝图”。通过它,你可以轻松查看和操作环境变量:
python
import os
# 查看所有环境变量
print(os.environ)
# 获取某个特定环境变量的值
print(os.environ.get('PATH'))
如果你查询某个不存在的环境变量,它会返回 None
。不过,你可以设置默认值来避免这个情况:
python
print(os.environ.get('x', 'default')) # 如果没有'x',就返回'default'
五、操作文件和目录——Python的“魔法棒”
1. 文件路径的正确拼接
别傻乎乎地手动拼接路径,os.path
模块提供了 join()
,专门来帮助你跨平台拼接路径:
python
import os
# 拼接路径(适配不同系统)
print(os.path.join('/home/user', 'folder', 'file.txt'))
Linux/Mac 下会输出:/home/user/folder/file.txt
Windows 下会输出:C:\home\user\folder\file.txt
2. 获取当前目录的绝对路径
有时候你需要确认自己当前在哪个目录,使用 os.path.abspath()
来获取当前路径的绝对路径:
python
import os
# 获取当前目录的绝对路径
print(os.path.abspath('.'))
3. 创建和删除目录
创建新目录,删除目录?os
模块也能搞定:
python
# 创建目录
os.mkdir('/path/to/new_dir')
# 删除目录
os.rmdir('/path/to/new_dir')
4. 轻松获取文件扩展名
想要快速获得文件的扩展名?用 os.path.splitext()
就能搞定:
python
import os
# 获取文件扩展名
print(os.path.splitext('file.txt'))
返回值是一个元组:文件路径和扩展名。方便吧?
5. 重命名和删除文件
文件不想要了,或者想改个名字?os.rename()
和 os.remove()
可以轻松搞定。
python
# 重命名文件
os.rename('old_name.txt', 'new_name.txt')
# 删除文件
os.remove('new_name.txt')
六、文件复制——哪里没有os
,哪里就有shutil
如果你想复制文件,os
模块帮不了你。它没有提供复制文件的功能。不过,幸运的是,Python的 shutil
模块可以提供 copyfile()
函数来帮助你轻松复制文件:
python
import shutil
# 复制文件
shutil.copyfile('source.txt', 'destination.txt')
七、列出当前目录的所有文件和目录
想要快速列出某个目录下的文件和子目录吗?用 os.listdir()
就能轻松实现。要注意,它返回的是文件和目录的名字(而非路径),所以你可以结合 os.path.isdir()
来筛选目录,或者结合 os.path.splitext()
来筛选文件类型。
python
# 列出所有目录
print([x for x in os.listdir('.') if os.path.isdir(x)])
# 列出所有.py文件
print([x for x in os.listdir('.') if os.path.isfile(x) and os.path.splitext(x)[1] == '.py'])
一行代码,轻松搞定所有文件和目录的过滤操作!
* 小结
-
os
模块让你在 Python 中轻松操作系统的文件和目录,极大地提高了开发效率。 -
使用
os.path
和os
模块中的其他函数,你可以实现路径拼接、目录创建、文件操作等常见任务。 -
shutil
模块是os
模块的好帮手,提供了文件复制等额外功能。
上机题目
-
题目 1:编写一个 Python 程序,模拟
dir -l
输出,列出当前目录下的所有文件和子目录,并显示每个文件的大小、最后修改时间和权限等信息。 -
题目 2:编写一个 Python 程序,遍历当前目录及其所有子目录,查找文件名包含指定字符串的文件,并输出相对路径。
-
题目 3:编写一个程序,将当前目录下所有
.txt
文件的内容复制到一个新的目录中,目录名称为txt_files_backup
。
答案示例
题目 1:模拟 dir -l
输出
python
import os
import time
for item in os.listdir('.'):
path = os.path.join('.', item)
if os.path.isdir(path):
print(f'{item}/ <DIR> {time.ctime(os.path.getmtime(path))}')
else:
print(f'{item} <FILE> {os.path.getsize(path)} bytes {time.ctime(os.path.getmtime(path))}')
题目 2:查找包含指定字符串的文件
python
import os
def find_files(keyword):
for root, dirs, files in os.walk('.'):
for file in files:
if keyword in file:
print(os.path.relpath(os.path.join(root, file)))
find_files('example')
题目 3:复制 .txt
文件到新目录
python
import os
import shutil
# 创建备份目录
os.makedirs('txt_files_backup', exist_ok=True)
# 遍历当前目录,复制所有.txt文件
for file in os.listdir('.'):
if file.endswith('.txt'):
shutil.copy(file, 'txt_files_backup')
print('备份完成!')
就这样,文件和目录操作变得又简单又有趣!快来动手试一试吧!

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。
更多推荐
所有评论(0)