Python 中的 os 模块

Python 中的 os 模块

在Python中,os 模块是一个内置的标准库,提供了许多与操作系统交互的功能。它允许你执行一系列操作,如文件和目录操作、环境变量管理等。要在Python脚本中使用os模块,你需要首先导入它。

一些常见的用法:

  • 创建和删除目录
  • 改变当前工作目录
  • 文件操作
  • 获取文件和目录列表
  • 环境变量
python 复制代码
# 导入os模块
import os

创建和删除目录

  • 创建一个新目录:
python 复制代码
os.mkdir('new_directory')
  • 如果要创建多级目录,可以使用 os.makedirs()
python 复制代码
os.makedirs('path/new_directory')
  • 删除目录:
python 复制代码
os.rmdir('new_directory')  # 删除目录
os.removedirs('path/new_directory')  # 删除多级目录

改变当前工作目录

  • 获取当前的工作目录:
python 复制代码
current_dir = os.getcwd()
print(current_dir)
  • 改变当前的工作目录:
python 复制代码
os.mkdir('new_directory')
os.chdir('new_directory')
current_dir = os.getcwd()
print(current_dir)

文件操作

  • 重命名文件:
python 复制代码
# 先切换回当前目录
os.chdir('../')
# 文件改名
os.rename('oldname.txt', 'newname.txt')
  • 删除文件:
python 复制代码
os.remove('file_name.txt')

获取文件和目录列表

  • 列出指定目录下的所有文件和子目录:
python 复制代码
for entry in os.listdir('.'):
    print(entry)

环境变量

设置环境变量(只在当前进程中有效):

python 复制代码
os.environ['ENV_VARIABLE_NAME'] = 'value'

获取环境变量:

python 复制代码
value = os.getenv('ENV_VARIABLE_NAME')
value

执行系统命令

  • 格式:os.system('command')
python 复制代码
os.system('ls') 

获取操作系统相关的属性

python 复制代码
print(os.name)

文件和路径操作

python 复制代码
print(os.path.exists('somefile.txt'))  # 判断文件是否存在
print(os.path.isfile('somefile.txt'))  # 判断是否为文件
print(os.path.isdir('somedir'))  # 判断是否为目录
print(os.path.abspath('somefile.txt'))  # 获取绝对路径
print(os.path.join('somedir', 'somefile.txt'))  # 路径连接
print(os.path.basename('somedir/somefile.txt'))  # 获取文件名
print(os.path.dirname('somedir/somefile.txt'))  # 获取目录路径

文件和目录的高级操作

对于更复杂的文件和目录操作,如复制、移动文件等,推荐使用 shutil 模块:

python 复制代码
import shutil
shutil.copyfile('data.db', 'archive.db')  # 复制文件
shutil.move('/build/executables', 'installdir')  # 移动文件 

文件通配符

  • 使用glob模块来查找符合特定规则的文件列表
python 复制代码
import glob
files = glob.glob('*.txt')  # 查找所有.txt文件
files

附件

本文对应的jupyter notebook源码链接,欢迎下载练习:https://download.csdn.net/download/fx_yzjy101/89835492

如有问题请留言。

相关推荐
前端摸鱼匠6 小时前
【AI大模型春招面试题8】词元化(Tokenization)的作用是什么?BPE、WordPiece、Unigram的原理与优缺点?
人工智能·ai·面试·职场和发展·求职招聘
xiaomo22496 小时前
javaee-多线程进阶
java·开发语言
暮冬-  Gentle°6 小时前
用Python制作一个文字冒险游戏
jvm·数据库·python
无敌秋6 小时前
C++ public, private, protected类的继承
开发语言·c++
造梦师阿鹏6 小时前
AI时代的结对编程:双模型协同,人主导的高效开发新范式
人工智能·结对编程
m0_579393666 小时前
C++代码混淆与保护
开发语言·c++·算法
qq_148115376 小时前
C++中的享元模式实战
开发语言·c++·算法
__Yvan6 小时前
Kotlin 的 ?.let{} ?: run{} 真的等价于 if-else 吗?
android·开发语言·前端·kotlin
左左右右左右摇晃6 小时前
Java并发——线程间的通信
java·开发语言
连线Insight6 小时前
理想发布MindVLA-o1:一个模型,如何真正理解3D世界?
人工智能