标准库模块——OS模块
OS模块,主要是用与工作目录,路径,文件等相关。
python文件的工作目录相关:
os.makedirs()
递归的创建一些文件夹。文件中的文件,配合exists进行使用。
import os print(os.makedirs(r'c:\b\c\d')) #递归的创建文件。
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()
删除目录,如果文件夹内没有文件,将删除上一级目录,直到全部删除。找不到目录将会报错。
import os print(os.removedirs(r'c:\b\c\d'))
os.mkdir
创建单级目录,上当与shell中mkdir dirname ****
import os os.mkdir('wq')
os.rmdir()
删除单级空目录,若目录不为空则无法删除,报错:相当于shell中rmdir dirname ***
import os print(os.rmdir(r'c:\b\c\d'))
los.listdir()
输出指定文件夹的内容。
path = "/var/www/html/" dirs = os.listdir( path )
os.getcwd()
显示现在的工作目录,即当前python脚本工作的目录路径。
import os print(os.getcwd()) E:\python\base\test
os.chdir()
更改工作路径。两种方法。推荐使用加r的方式。相当于shell下cd。
import os print(os.chdir(r'C:\Users')) print(os.chdir('C:\\Users'))
os.curdir()
返回当前目录。('.')
import os print(os.curdir)
os.pardir()
返回上一级目录。('..')
import os
print(os.pardir)
文件相关:
os.remove()
删除一个文件
import os print(os.remove(r'c:\b\c'))
os.rename()
重命名一个文件/目录
import os print(os.rename('aaa','bbb')) #a=原名 b=新名
os.stat()
可以查看文件的详细信息,比如大小,权限,创建日期等等。
import os print(os.stat(r'C:\b'))
路径相关:
os.path.abspath
让系统将文件的相对路径,智能的更改到绝对路径。
print(os.path.abspath(__file__))
E:\python\base\11.py
os.path.split()
将路径和文件进行分割,以元组形式输出。
import os print(os.path.split(r'c:\b\c\d\a.txt'))
os.path.dirname()
返回目录名,不要文件名,可以配合上面那个使用。
print(os.path.dirname(os.path.abspath(__file__))) E:\python\base
如果需要多级,那么些多个。。。
print(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) E:\python
os.path.basename()
只取文件名。
import os print(os.path.basename(r'c:\b\c\d\a.txt'))
os.path.exists()
判断路径是否存在。存在返回True,不存在返回False
import os print(os.path.exists(r'c:\b\c\d\a.txt'))
os.path.isabs()
判断是否为绝对路径。
import os print(os.path.isabs(r'c:\b\c\d\a.txt'))
os.path.isfile()
判断是否是一个文件。
import os print(os.path.isfile(r'c:\b\c\d\a.txt'))
os.path.isdir()
判断是否是一个目录。
import os print(os.path.isdir(r'c:\b\c\d\a.txt'))
os.path.join()
将多个路径组合后返回,第一个绝对路径之前的参数将被忽略。
import os print(os.path.join(r'c:',r'\a.txt'))
os.path.getatime()
获取最后一个存取时间。返回第一个时间戳。
import os print(os.path.getatime(r'C:\a.txt'))
os.path.getmtime()
获取最后一个修改时间,返回一个时间戳。
import os print(os.path.getatime(r'C:\a.txt'))
os.path.getsize()
显示文件内字符字符串的个数。
import os a = os.path.getsize('course_list.pickle') print(a)
a = os.path.getsize('course_list.pickle') if a is not 0: print('111111')
os.walk
将文件夹内的所有文件找出。
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 下为:‘/’
import os print(os.sep())
os.linesep()
输出操作系统特定的换行分隔符。win下为:‘\r\n’,linux下为:‘/n’
import os print(os.linesep())
os.pathsep()
查看系统多路径的路径分隔符。 win下为:‘;’,linux下为:‘:’
import os print(os.pathsep())
os.name()
输出字符串指示当前的系统平台。win下为:‘nt’,linux下为:‘posix’
import os print(os.name())
os.urandom(32)
随机生成一个32字节的字符串
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()
获取当前系统的环境变量。
import os print(os.environ())
os.system()
import os
os.system('dir')
可以进行对系统命令的输入只执行命令,不保存结果。
例如:输入一个dir命令。
打印出来的结果,命名为dir_res,并可以查看dir命令是否可以运行。
import os
dir_res=os.system('dir')
print("--->",dir_res)
0:为命令可以输出
1:为命令错误
如果系统命令可以正常执行,那么显示haha,否则显示hehe
import os
dir_res=os.system('dis')
if dir_res == 0:
print('haha')
else:
print('hehe')
os.popen()
import os
dir_res=os.popen('dir')
print(dir_res)
<os._wrap_close object at 0x000001A5F089E630>
可以打印一个内存对象地址。表示输出系统命令后,将该值保存在一个内存里。
如果需要查看完成,就需要添加一个命令。
必须用read命令来取一下该值。
import os
dir_res=os.popen('dir').read()
print(dir_res)
os.getpid()
可以查看当前的进程ID
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
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
获取文件大小(以字节来输出)
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:创建时间