一.OS库简介
OS是Operating System的简写,即操作系统。
OS库是一个操作系统接口模块,提供一些方便使用操作系统相关功能的函数。
二.OS库常用函数
2.1文件和目录
2.1.1:os.getcwd()
作用:返回当前工作目录,结果是一个字符串。
print(f"当前工作目录为:{os.getcwd()}")
结果:
2.1.2:os.mkdir(path)
作用:
创建一个路径为path的目录。
os.mkdir(f"{os.getcwd()}/zheshiyangyang")
结果:
2.1.3:os.rmdir(path)
作用:
删除路径为path的目录,若路径不为空或者不存在,则会报错。
os.rmdir("666")
os.rmdir("鞠婧祎")
os.rmdir("zheshiyangyang")
效果:
2.1.4:os.chdir(path)
作用:
将工作目录改为path路径下。
tmp = os.getcwd()
os.chdir("E:/zheshiyangyang")
print(f"当前工作目录为:{os.getcwd()}")
os.chdir(tmp)
print(f"当前工作目录为:{os.getcwd()}")
效果:
2.1.5:os.listdir(path)
作用:
返回path路径下所有文件和目录名的任意顺序排列的列表。
print(os.listdir(os.getcwd()))
效果:
2.2:os.path常见路径操作
2.2.1:os.path.abspath(path)
作用:
返回path路径的绝对路径(标准化的),path不存在也不会报错。
print(os.path.abspath("main.py"))
效果:
2.2.2:os.path.basename(path)
作用:
返回路径path的基本名称(即路径path的最末级文件)
print(os.path.basename("main.py"))
效果:
2.2.3:os.path.dirname(path)
作用:
返回路径path的目录名称(即路径path的最末级文件夹)
print(os.path.dirname(os.getcwd()))
效果:
2.2.4:os.path.exists(path)
作用:
判断path是否指向一个已存在的路径,存在返回True,不存在返回False。
print(os.path.dirname(os.getcwd()+"/main.py")) #文件夹存在
print(os.path.dirname(os.getcwd()+"/666.py")) #文件不存在
效果:
2.2.5:os.path.isabs(path)
作用:
判断path是否为一个绝对路径,是返回True,不是返回False。
print(os.path.isabs(os.getcwd())) #是绝对路径
print(os.path.isabs("main.py")) #不是绝对路径
效果:
2.2.6:os.path.isfile(path)
作用:
判断path是否为一个已存在的文件,是则返回True,不是返回False。
print(os.path.isfile(os.getcwd())) #不是文件
print(os.path.isfile("main.py")) #是文件
效果:
2.2.7:os.path,isdir(path)
作用:
若path指向一个已存在文件夹的符号链接或者一个已存在文件夹路径,返回True,否则返回False
print(os.path.isdir("鞠婧祎"))
效果:
2.2.8:os.path.normcase(path)
作用:
规范路径名称,在Windows操作系统上,将路径名称中的所有字符转为小写,将所有反斜杠转为斜杠。在其它系统上,不做任何修改,返回原先的path。
print(os.path.normcase("C:/6ABS/ADAS4"))
效果:
2.2.9:os.path.split(path)
作用:
将路径path拆分成(head,tail),其中head表示除去路径最后一部分外的所有内容,tail表示路径最后一部分。
值得注意的是:
tail部分不会包含斜杠,如果path以斜杠结尾,tail将为空。
如果path中没有斜杠,head将为空。
如果path为空,则head和tail均为空。
example1 = "/abc/def/haha.txt" #一般路径
example2 = "/abc/def/" #以斜杠结尾的路径
example3 = "main.py" #没有斜杠的路径
example4 = "" #空路径
example5 = "/" #根目录print("一般路径head={},tail={}".format(*os.path.split(example1)))
print("以斜杠结尾的路径head={},tail={}".format(*os.path.split(example2)))
print("没有斜杠的路径head={},tail={}".format(*os.path.split(example3)))
print("空路径head={},tail={}".format(*os.path.split(example4)))
print("根目录head={},tail={}".format(*os.path.split(example5)))
效果:
2.2.10:os.path.splitext(path)
作用:
将路径path产分为(A,B),其中A+B == path,B为空或者英文句点开头(最多包含一个句点),且最多包含一个句点。路径前的句点将被忽略。
简单来讲,就是拿掉文件的后缀。
example1 = "/abs/cdf/" #文件夹路径
example2 = "/abs/a.b.py" #包含多个句点的文件路径
example3 = "/abc/66.py" #包含单个句点的文件路径
example4 = ".exam" #以句点开头的路径
print("文件夹路径root={},ext={}".format(*os.path.splitext(example1)))
print("包含多个句点的文件路径root={},ext={}".format(*os.path.splitext(example2)))
print("包含单个句点的文件路径root={},ext={}".format(*os.path.splitext(example3)))
print("以句点开头的路径root={},ext={}".format(*os.path.splitext(example4)))
效果:
2.2.11:os.path.join(path1,path2,path3,......)
作用:
将路径拼接,具体规则如下:
1.如果不存在以“/”或者“/”开始的参数,函数会自动加上“\”。
print(os.path.join("ab","cd","ef"))
2.如果存在“/”或者“\”开头的参数,则从最后一个“/”或者“\”开始拼接,之前的参数全部舍弃。
print(os.path.join("abc","/cd","ef")) #存在/
print(os.path.join("abc","\\6","ef")) #存在\
print(os.path.join("/abc","/cd","ef")) #存在多个/
ps:若是从“/”开始,则“/”不会被替换为“\”
3.如果存在“./”和“/”开头的参数,则以“/”为标准,忽略“./”。
print(os.path.join("abc","./sda","/cxz"))
输出:/cxz
4.如果只存在“./”开头的参数,则从“./”开头的参数的上一个参数开始拼接。
print(os.path.join("abc","./efd","sad"))
输出:abc\./efd\sad