标准库模块——OS模块
OS模块,主要是用与工作目录,路径,文件等相关。
python文件的工作目录相关:
os.makedirs()
递归的创建一些文件夹。文件中的文件,配合exists进行使用。
1 2 | import os print (os.makedirs(r 'c:\b\c\d' )) #递归的创建文件。 |
1 2 3 4 5 6 7 8 | import os file = r '222\111\333\222\111' lis = os.path.join(os.path.dirname(__file__), file ) #找到要放入的文件路径(以当前文件,进行的拼接) if not os.path.exists(lis): #判断如果没有那么将会新建一个路径 os.makedirs(lis) with open (lis + r '\a.txt' ,mode = 'w' ,encoding = 'utf-8' ) as f: f.write( 'hahaha' ) |
os.removedirs()
删除目录,如果文件夹内没有文件,将删除上一级目录,直到全部删除。找不到目录将会报错。
1 2 | import os print (os.removedirs(r 'c:\b\c\d' )) |
os.mkdir
创建单级目录,上当与shell中mkdir dirname ****
1 2 | import os os.mkdir( 'wq' ) |
os.rmdir()
删除单级空目录,若目录不为空则无法删除,报错:相当于shell中rmdir dirname ***
1 2 | import os print (os.rmdir(r 'c:\b\c\d' )) |
los.listdir()
输出指定文件夹的内容。
1 2 | path = "/var/www/html/" dirs = os.listdir( path ) |
os.getcwd()
显示现在的工作目录,即当前python脚本工作的目录路径。
1 2 3 4 | import os print (os.getcwd()) E:\python\base\test |
os.chdir()
更改工作路径。两种方法。推荐使用加r的方式。相当于shell下cd。
1 2 3 | import os print (os.chdir(r 'C:\Users' )) print (os.chdir( 'C:\\Users' )) |
os.curdir()
返回当前目录。('.')
1 2 | import os print (os.curdir) |
os.pardir()
返回上一级目录。('..')
1 2 | import os print (os.pardir) |
文件相关:
os.remove()
删除一个文件
1 2 | import os print (os.remove(r 'c:\b\c' )) |
os.rename()
重命名一个文件/目录
1 2 | import os print (os.rename( 'aaa' , 'bbb' )) #a=原名 b=新名 |
os.stat()
可以查看文件的详细信息,比如大小,权限,创建日期等等。
1 2 | import os print (os.stat(r 'C:\b' )) |
路径相关:
os.path.abspath
让系统将文件的相对路径,智能的更改到绝对路径。
1 | print (os.path.abspath(__file__))E:\python\base\ 11.py |
os.path.split()
将路径和文件进行分割,以元组形式输出。
1 2 | import os print (os.path.split(r 'c:\b\c\d\a.txt' )) |
os.path.dirname()
返回目录名,不要文件名,可以配合上面那个使用。
1 2 3 | print (os.path.dirname(os.path.abspath(__file__))) E:\python\base |
如果需要多级,那么些多个。。。
1 2 3 | print (os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) E:\python |
os.path.basename()
只取文件名。
1 2 | import os print (os.path.basename(r 'c:\b\c\d\a.txt' )) |
os.path.exists()
判断路径是否存在。存在返回True,不存在返回False
1 2 | import os print (os.path.exists(r 'c:\b\c\d\a.txt' )) |
os.path.isabs()
判断是否为绝对路径。
1 2 | import os print (os.path.isabs(r 'c:\b\c\d\a.txt' )) |
os.path.isfile()
判断是否是一个文件。
1 2 | import os print (os.path.isfile(r 'c:\b\c\d\a.txt' )) |
os.path.isdir()
判断是否是一个目录。
1 2 | import os print (os.path.isdir(r 'c:\b\c\d\a.txt' )) |
os.path.join()
将多个路径组合后返回,第一个绝对路径之前的参数将被忽略。
1 2 | import os print (os.path.join(r 'c:' ,r '\a.txt' )) |
os.path.getatime()
获取最后一个存取时间。返回第一个时间戳。
1 2 | import os print (os.path.getatime(r 'C:\a.txt' )) |
os.path.getmtime()
获取最后一个修改时间,返回一个时间戳。
1 2 | import os print (os.path.getatime(r 'C:\a.txt' )) |
os.path.getsize()
显示文件内字符字符串的个数。
1 2 3 | import os a = os.path.getsize( 'course_list.pickle' ) print (a) |
1 2 3 | a = os.path.getsize( 'course_list.pickle' ) if a is not 0 : print ( '111111' ) |
os.walk
将文件夹内的所有文件找出。
1 2 3 4 5 6 7 8 | import os path = os.walk(r 'D:/python/1111' ) #walk会生成一个可迭代对象,需要进行for循环。 for a,b,c in path: #通过for循环,walk会将该文件夹内的所有文件夹都依次循环,每个循环都会产生一个固定格式的内容。 #每一次循环会生成以元组格式的三个内容(固定的) #a:文件路径,b:以发现的文件夹名称 c:当前文件夹中的所有文件 for item in c: print (os.path.join(a,item)) #用路径拼接的方式,将文件路径和所找到的文件进行拼接。 |
操作系统相关:
os.sep()
输出操作系统特定的路径分隔符。win下为:‘\\’ , linux 下为:‘/’
1 2 | import os print (os.sep()) |
os.linesep()
输出操作系统特定的换行分隔符。win下为:‘\r\n’,linux下为:‘/n’
1 2 | import os print (os.linesep()) |
os.pathsep()
查看系统多路径的路径分隔符。 win下为:‘;’,linux下为:‘:’
1 2 | import os print (os.pathsep()) |
os.name()
输出字符串指示当前的系统平台。win下为:‘nt’,linux下为:‘posix’
1 2 | import os print (os.name()) |
os.urandom(32)
随机生成一个32字节的字符串
1 2 3 4 5 | import os print (os.urandom( 32 )) #b'\x9d\x13cu\x15\xdf\x10\xfd\xa5\\\x14\x10\xe4"\x02x\xbcFp\xb7\xa5\t[A\x8e\xdefo\x00\xe3\x97\x93' |
os.environ()
获取当前系统的环境变量。
1 2 | import os print (os.environ()) |
os.system()
1 2 | import os os.system( 'dir' ) |
可以进行对系统命令的输入只执行命令,不保存结果。
例如:输入一个dir命令。
打印出来的结果,命名为dir_res,并可以查看dir命令是否可以运行。
1 2 3 | import os dir_res = os.system( 'dir' ) print ( "--->" ,dir_res) |
0:为命令可以输出
1:为命令错误
如果系统命令可以正常执行,那么显示haha,否则显示hehe
1 2 3 4 5 6 | import os dir_res = os.system( 'dis' ) if dir_res = = 0 : print ( 'haha' ) else : print ( 'hehe' ) |
os.popen()
1 2 3 4 | import os dir_res = os.popen( 'dir' ) print (dir_res) <os._wrap_close object at 0x000001A5F089E630 > |
可以打印一个内存对象地址。表示输出系统命令后,将该值保存在一个内存里。
如果需要查看完成,就需要添加一个命令。
必须用read命令来取一下该值。
1 2 3 | import os dir_res = os.popen( 'dir' ).read() print (dir_res) |
os.getpid()
可以查看当前的进程ID
1 2 3 4 5 6 7 8 9 10 | from multiprocessing import Process import os def f(): print (os.getpid()) #子进程ID print (os.getppid()) #父进程ID if __name__ = = '__main__' : for i in range ( 2 ): p = Process(target = f) p.start() p.join() |
os.getppid()
可以查看当前的父进程的ID
1 2 3 4 5 6 7 8 9 10 | from multiprocessing import Process import os def f(): print (os.getpid()) #子进程ID print (os.getppid()) #父进程ID if __name__ = = '__main__' : for i in range ( 2 ): p = Process(target = f) p.start() p.join() |
os.stat('path/filename')获取文件/目录信息的结构说明:
os.stat(path).st_size
获取文件大小(以字节来输出)
1 2 3 | import os data_size = os.stat( 'a.log' ).st_size print (data_size) |
os.stat(path).st_mode:inode保护模式
os.stat(path).st_ino:inode节点号
os.stat(path).st_dev:inode驻留的设备
os.stat(path).st_nlink:inode的连接数
os.stat(path).st_uid:所有者的用户ID
os.stat(path).st_gid:所有者的组ID
os.stat(path).st_atime:上次访问的时间
os.stat(path).st_mtime:最后一次修改时间
os.stat(path).st_ctime:创建时间
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)