17 Python的os模块

概述

在上一节,我们介绍了如何在Python中使用多线程,包括:threading模块、使用线程、创建自定义线程、线程同步等内容。在这一节,我们将介绍Python的os模块。os模块是一个非常强大且有用的模块,它提供了许多与操作系统交互的功能。通过os模块,我们可以轻松地进行文件和目录的操作,比如:创建、读取、删除文件和目录等。

下面,我们将逐一介绍os模块中一些常用的属性和函数。

os.environ属性

os.environ是一个字典,用于访问和修改环境变量。环境变量是操作系统提供的一种机制,允许程序在运行时获取和设置一些配置信息。

python 复制代码
import os

# 输出类似:environ({'ALLUSERSPROFILE': 'C:\\ProgramData', 'APPDATA': 'C:\\Users\\H\\AppData\\Roaming'})
print(os.environ)

user_home = os.environ.get('USERPROFILE')
# 输出:C:\Users\H
print(user_home)

# 设置环境变量的值  
os.environ['MY_VARIABLE'] = 'some_value'

# 检查环境变量是否存在
if 'MY_VARIABLE' in os.environ:
    print('existed')
else:  
    print('not existed')

os.sep属性

os.sep是一个字符串,表示当前操作系统的路径分隔符。在不同的操作系统上,路径分隔符可能会有所不同。比如:在Windows操作系统中,路径分隔符是反斜杠\;而在Unix和Linux系统中,路径分隔符是正斜杠/。使用os.sep可以帮助我们在编写跨平台的代码时,确保正确地使用当前操作系统的路径分隔符。

python 复制代码
import os

file_path = "folder" + os.sep + "file.txt"
# 输出:folder\file.txt
print(file_path)

os.linesep属性

os.linesep是一个字符串,表示当前操作系统的行分隔符。在不同的操作系统上,行分隔符可能会有所不同。比如:在Windows操作系统中,行分隔符通常是\r\n(回车符和换行符的组合);而在Unix和Linux系统中,行分隔符通常是\n(只有换行符)。使用os.linesep可以帮助我们在编写跨平台的代码时,确保正确地使用当前操作系统的行分隔符。

无论你在哪个操作系统上运行下面的示例代码,它都会使用正确的行分隔符来写入文本文件。

python 复制代码
import os

lines = ['Hello', 'CSDN']
with open("data.txt", "wb") as file:
    for line in lines:
        text = line + os.linesep
        file.write(text.encode('utf-8'))

os.getcwd()函数

os.getcwd()函数返回一个字符串,表示当前工作目录的绝对路径。这个函数在我们需要获取当前脚本或程序所在的工作目录时非常有用,可以帮助我们构建相对于当前工作目录的文件路径,或者确定当前程序在哪个目录下运行。

python 复制代码
import os

# 输出取决于当前的工作目录
print(os.getcwd())

os.chdir()函数

os.chdir()函数用于改变当前工作目录,它接受一个字符串参数,表示要切换到的目录的路径。注意:这个函数只改变当前Python脚本或程序的工作目录,并不会影响到其他程序或全局设置。

python 复制代码
import os

os.chdir('F:\\sdk')

os.path.join()函数

os.path.join()函数用于将多个路径组合成一个完整的路径,它接受任意数量的字符串参数,并根据当前操作系统的路径规则将它们连接起来。这个函数的优点在于:可以根据当前操作系统自动使用正确的路径分隔符。因此,代码在不同的操作系统上都可以正常工作。

python 复制代码
import os

path = os.path.join('folder1', 'folder2', 'filename.txt')
# 在Windows系统上,输出: folder1\folder2\filename.txt 
# 在Unix/Linux系统上,输出: folder1/folder2/filename.txt
print(path)

os.listdir()函数

os.listdir(path)函数用于列出指定目录下的所有文件和子目录,它接受一个字符串参数,表示要列出内容的目录的路径。os.listdir()函数会返回一个列表,其中包含指定目录下的所有文件和子目录的名称。这个列表可以用于进一步的操作,比如:筛选文件、遍历目录等。

python 复制代码
import os

files = os.listdir('.')
for file in files:
    print(file)

os.mkdir()函数

os.mkdir(path)函数用于创建一个新的目录,它接受一个字符串参数,表示要创建的目录的路径。如果目录已经存在,该函数会抛出一个FileExistsError异常。如果想要创建多级目录,也就是递归创建目录,可以使用os.makedirs()函数。这个函数可以递归地创建所有不存在的父目录。如果目录已经存在,os.makedirs()函数不会抛出异常。

python 复制代码
import os

# 创建一个新的目录
os.mkdir('path/to/dir')

# 递归地创建一个新的目录及其父目录
os.makedirs('path/to/dir')

os.rmdir()函数

os.rmdir(path)函数用于删除一个空目录,它接受一个字符串参数,表示要删除的目录的路径。如果目录不为空,该函数会抛出一个OSError异常。如果想要删除一个目录及其所有内容(包括子目录和文件),可以使用shutil.rmtree()函数。这个函数可以递归地删除目录及其内容,无论目录是否为空,该函数都可以将其删除。

python 复制代码
import os

# 删除一个空目录
os.rmdir('path/to/dir')

os.stat()函数

os.stat(path)函数用于获取文件或目录的状态信息,它接受一个字符串参数,表示要获取状态信息的文件或目录的路径。os.stat(path)函数返回一个os.stat_result对象,其中包含有关文件或目录的信息,比如:文件大小、修改时间、访问权限等。如果只关心文件是否存在,可以使用os.path.exists(path)函数来检查文件或目录是否存在,而不需要获取完整的状态信息。

python 复制代码
import os

# 获取文件的状态信息
file_stat = os.stat('F:\\data.txt')

# 获取文件的大小,以字节为单位
print(file_stat.st_size)

# 获取文件的修改时间
print(file_stat.st_mtime)

# 获取文件的访问权限
print(file_stat.st_mode)

os.system()函数

os.system(command)函数用于执行一个系统命令,它接受一个字符串参数,表示要执行的命令。os.system()函数会将命令发送到系统的shell中执行,并返回命令的退出状态码。如果命令成功执行,退出状态码为0;否则,退出状态码为非零值。注意:os.system()函数会阻塞当前进程,直到命令执行完成。如果需要执行一个耗时的命令,并希望不阻塞当前进程,可以考虑使用subprocess模块中的函数,比如:subprocess.Popen()等。

python 复制代码
import os

# 执行指定的系统命令
os.system('dir')
相关推荐
毕设源码-郭学长34 分钟前
【开题答辩全过程】以 基于python电商商城系统为例,包含答辩的问题和答案
开发语言·python
black0moonlight34 分钟前
win11 isaacsim 5.1.0 和lab配置
python
知乎的哥廷根数学学派38 分钟前
基于多尺度注意力机制融合连续小波变换与原型网络的滚动轴承小样本故障诊断方法(Pytorch)
网络·人工智能·pytorch·python·深度学习·算法·机器学习
网安CILLE39 分钟前
PHP四大输出语句
linux·开发语言·python·web安全·网络安全·系统安全·php
jjjddfvv41 分钟前
超级简单启动llamafactory!
windows·python·深度学习·神经网络·微调·audiolm·llamafactory
A先生的AI之旅43 分钟前
2025顶会TimeDRT快速解读
人工智能·pytorch·python·深度学习·机器学习
程序员小远1 小时前
完整的项目测试方案流程
自动化测试·软件测试·python·功能测试·测试工具·职场和发展·测试用例
程序猿阿伟1 小时前
《量子算法开发实战手册:Python全栈能力的落地指南》
python·算法·量子计算
雪风飞舞1 小时前
python根据音频生成柱状图
开发语言·python·音视频