Python OS模块常用方法整理

os模块包含了普遍的操作系统和文件目录方法

引入类库

首先需要引入类库

python 复制代码
import os

常用方法

OS模块方法

获取操作系统类型

nt->window:Microsoft Windows NT

posix->Linux/Mac OS: Portable Operating System Interface of UNIX(可移植操作系统接口)

示例如下:

python 复制代码
print(os.name) # nt
获取系统环境变量
所有环境变量

示例如下:

python 复制代码
print(os.environ)
指定环境变量

示例如下:

python 复制代码
print(os.environ.get('APPDATA'))

# C:\Users\18201\AppData\Roaming
获取当前目录

示例如下:

python 复制代码
print(os.curdir)

# 执行结果:.
获取当前工作目录

即当前python脚本所在目录

示例如下:

python 复制代码
print(os.getcwd())

# 执行结果: E:\lianxipy\day3
获取目录所有文件

使用os的listdir方法,返回指定目录下所有的文件(以列表的形式)。

示例如下:

python 复制代码
print(os.listdir(r'E:\lianxipy\day3'))

# 执行结果
# ['os整理.py', '元组.py', '字典.py', '字符串.py', '异常处理.py', '文件持久操作.py', '文件读写.py','装饰器.py', '迭代器.py', '集合.py']
创建目录

在当前目录下创建新目录

绝对路径

示例如下:

python 复制代码
os.mkdir(r'E:\lianxipy\day3\new')
相对路径

示例如下:

python 复制代码
os.mkdir('new2')

注意:

目录如果已存在,就会抛出异常

bash 复制代码
Traceback (most recent call last):
  File "E:\lianxipy\day3\os整理.py", line 38, in <module>
    os.mkdir(r'E:\lianxipy\day3\new')
FileExistsError: [WinError 183] 当文件已存在时,无法创建该文件。: 'E:\\lianxipy\\day3\\new'
执行结果
删除目录

删除目录使用刚才创建的new和new2目录为例。

示例如下:

python 复制代码
os.rmdir(r'E:\lianxipy\day3\new')
os.rmdir('new2') # ./new2 or new2都可以
获取文件属性

示例如下:

python 复制代码
print(os.stat('os整理.py'))

执行结果:

bash 复制代码
os.stat_result(st_mode=33206, st_ino=1970324837013767, st_dev=3365708600, st_nlink=1, st_uid=0, st_gid=0, st_size=1208, st_atime=1701744932, st_mtime=1701744932, st_ctime=1701740791)

说明:

st_mode: inode 保护模式

st_ino: inode 节点号。

st_dev: inode 驻留的设备。

st_nlink: inode 的链接数。

st_uid: 所有者的用户ID。

st_gid: 所有者的组ID。

st_size: 普通文件以字节为单位的大小;包含等待某些特殊文件的数据。

st_atime: 上次访问的时间。

st_mtime: 最后一次修改的时间。

st_ctime: 由操作系统报告的"ctime"。在某些系统上(如Unix)是最新的元数据更改的时间,在其它系统上(如Windows)是创建时间(详细信息参见平台的文档)。

重命名
对目录重命名

需要传入两个路径+名称,分别为路径目录与新路径目录。

示例如下:

python 复制代码
os.rename('new', 'new1')
对文件重命名

这里也是传入两个路径名称,需要注意的是路径要携带文件扩展名,否则就修改文件格式,会导致无法识别文件。

示例如下:

python 复制代码
os.rename('函数1.py', '函数.py')
删除普通文件

删除文件需要使用os的remove方法,传入一个绝对路径或相对路径的文件即可删除。在当前目录下创建一个new.txt用于测试删除。

示例如下:

python 复制代码
os.remove('new.txt')

如果存在就会被删除,如果不存在就会抛出异常:

bash 复制代码
Traceback (most recent call last):
  File "E:\lianxipy\day3\os整理.py", line 59, in <module>
    os.remove('new.txt')
FileNotFoundError: [WinError 2] 系统找不到指定的文件。: 'new.txt'
运行shell命令

Shell命令就是指使用cmd.exe打开的小黑窗口执行的命令。使用shell命令需要谨慎,否则易引发安全问题。

示例如下:

python 复制代码
# 设置脚本文件编码为utf-8
os.system("CHCP 65001")
# 查看本地配置
os.system("ipconfig")
# 查看文件目录树结构
os.system("tree")
# 打开远程桌面
os.system("mstsc")

OS path模块方法

查看当前绝对路径

示例如下:

python 复制代码
print(os.path.abspath('./os整理.py'))

# 执行结果
# E:\lianxipy\day3\os整理.py
拼接路径

注意:参数2中开始不能是斜杠,否则会覆盖掉参数1除根外的其他路径

示例如下:

python 复制代码
path1 = "E:\lianxipy\day3"
path2 = "text\\new1\\new2"
print(os.path.join(path1, path2))

# 执行结果
# E:\lianxipy\day3\text\new1\new2
拆分路径

从路径中拆出最后一个目录

示例如下:

python 复制代码
path3 = r"E:\lianxipy\day3\text\new1\new2"
print(os.path.split(path3))

# 执行结果
# ('E:\\lianxipy\\day3\\text\\new1', 'new2')
获取扩展名

获取文件的扩展名(带.)

示例如下:

python 复制代码
print(os.path.splitext(r"E:\lianxipy\day3\os整理.py"))
# 若没有扩展名
print(os.path.splitext(r"E:\lianxipy\day3\os整理"))

# 执行结果
# ('E:\\lianxipy\\day3\\os整理', '.py')
# ('E:\\lianxipy\\day3\\os整理', '')
判断目录

判断目录参数为绝对路径返回布尔值,存在即为True。

示例如下:

python 复制代码
print(os.path.isdir(r"E:\lianxipy\day3\os整理.py")) # False
print(os.path.isdir(r"E:\lianxipy\day3")) # True
判断文件是否存在

示例如下:

python 复制代码
print(os.path.isfile(r"E:\lianxipy\day3\os整理.py")) # True
print(os.path.isfile(r"E:\lianxipy\day3\os整理1.py"))# False
判断路径是否存在

可用来判断绝对路径的目录

示例如下:

python 复制代码
print(os.path.exists(r"E:\lianxipy\day3")) # True

也可以用来判断文件

python 复制代码
print(os.path.exists(r"E:\lianxipy\day3\os整理.py")) # True
获取文件的大小

获取文件和目录大小单位kb

示例如下:

python 复制代码
print(os.path.getsize(r"E:\lianxipy\day3\os整理.py")) # 3457

也可以使用获取目录大小 判断是否空文件夹

python 复制代码
print(os.path.getsize(r"E:\lianxipy\day3\new")) # 0
文件的目录获取

dirname 函数用于返回文件路径,也就是返回 path 参数中最后一个斜杠之前的所有内容。

basename函数用于去掉目录路径,单独返回文件名。

示例如下:

python 复制代码
path = r"E:\lianxipy\day3\os整理.py"
print(os.path.dirname(path))
print(os.path.basename(path))

# 执行结果
# E:\lianxipy\day3
# os整理.py

总结

本篇主要整理了一些os模块常用的操作方法。

相关推荐
JustHappy7 小时前
古法编程秘籍(七):互联网到底是什么?把两台电脑怎么说话搞懂就够了
前端·后端·网络协议
老毛肚7 小时前
jeecg-boot-base-core 02 day
javascript·python
yaoxin5211237 小时前
434. Java 日期时间 API - Period 基于日期的时间段
java·开发语言·python
Hommy887 小时前
【剪映小助手】添加图片接口(Add Images)
后端·github·剪映小助手·视频剪辑自动化
凡人叶枫7 小时前
Effective C++ 条款30:透彻了解 inlining 的里里外外
linux·开发语言·c++·嵌入式开发·effective c++
GetcharZp8 小时前
别再盲目用 OpenCV 读图了,这才是 CV 预处理的终极杀手锏!
后端
学逆向的8 小时前
C++纯虚函数
开发语言·c++·网络安全
岁月宁静8 小时前
RAG 文档摄入全链路,从原理到生产落地
vue.js·人工智能·python
程序员二叉8 小时前
【JUC】ThreadLocal底层原理|内存泄漏|弱引用|跨线程传递方案
java·开发语言·面试·职场和发展·juc
程序员二叉8 小时前
【JUC】线程池全套深度详解|参数|流程|拒绝策略|调优|异常处理
java·开发语言·jvm·算法·面试·juc