标准库模块——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,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core GC计划阶段(plan_phase)底层原理浅谈
· .NET开发智能桌面机器人:用.NET IoT库编写驱动控制两个屏幕
· 用纯.NET开发并制作一个智能桌面机器人:从.NET IoT入门开始
· 一个超经典 WinForm,WPF 卡死问题的终极反思
· ASP.NET Core - 日志记录系统(二)
· 在外漂泊的这几年总结和感悟,展望未来
· 博客园 & 1Panel 联合终身会员上线
· 支付宝事故这事儿,凭什么又是程序员背锅?有没有可能是这样的...
· https证书一键自动续期,帮你解放90天限制
· 在 ASP.NET Core WebAPI如何实现版本控制?