os模块

os模块与操作系统交换的一个接口

os常用方法:

1 os.remove(‘path/filename’) 删除文件
2
3 os.rename(oldname, newname) 重命名文件
4
5 os.walk() 生成目录树下的所有文件名
6
7 os.chdir('dirname') 改变目录
8
9 os.mkdir/makedirs('dirname')创建目录/多层目录
10
11 os.rmdir/removedirs('dirname') 删除目录/多层目录
12
13 os.listdir('dirname') 列出指定目录的文件
14
15 os.getcwd() 取得当前工作目录
16
17 os.chmod() 改变目录权限
18
19 os.path.basename(‘path/filename’) 去掉目录路径,返回文件名
20
21 os.path.dirname(‘path/filename’) 去掉文件名,返回目录路径
22
23 os.path.join(path1[,path2[,...]]) 将分离的各部分组合成一个路径名
24
25 os.path.split('path') 返回( dirname(), basename())元组
26
27 os.path.splitext() 返回 (filename, extension) 元组
28
29 os.path.getatime\ctime\mtime 分别返回最近访问、创建、修改时间
30
31 os.path.getsize() 返回文件大小
32
33 os.path.exists() 是否存在
34
35 os.path.isabs() 是否为绝对路径
36
37 os.path.isdir() 是否为目录
38
39 os.path.isfile() 是否为文件



举例演示



1 #os模块就是对操作系统进行操作,使用该模块必须先导入模块:
2 import os
3
4 # getcwd() 获取当前工作目录(当前工作目录默认都是当前文件所在的文件夹)
5 res = os.getcwd()
6 print(res)
7
8 #chdir() 改变当前工作目录
9
10 os.chdir("G:/2020老男孩全栈/day14 常用模块")
11
12 res1 =os.getcwd()
13 print(res1)
14
15 #操作时如果书写完整的路径则不需要考虑默认工作目录的问题,按照实际书写路径操作
16 open('02.txt','w')
17
18 # open("完整的路径","模式")
19
20 #listdir () 获取指定的文件夹中所有的内容的名称列表
21
22 res2=os.listdir("G:/2020老男孩全栈/day14 常用模块")
23 print(res2)
24
25
26 """
27 import os
28 #mkdir() 创建文件夹
29 os.mkdir("kwx")
30
31 # makedir 递归创建文件夹
32 # os.makedirs("G:/2020老男孩全栈/day14 常用模块/a/b/c/d")
33
34
35 # rmdir() 删除空目录
36 # os.rmdir("kwx")
37
38 #removedirs 递归删除文件夹 必须都是空目录
39 # os.removedirs("G:/2020老男孩全栈/day14 常用模块/a/b/c/d")
40
41
42
43 #rename()文件 或文件夹重命名
44
45 # os.rename("G:/2020老男孩全栈/day14 常用模块/a","G:/2020老男孩全栈/day14 常用模块/abc")
46 # os.rename("02.txt","002.txt")
47
48 # stat()获取文件或者文件夹的信息
49 result=os.stat("G:/2020老男孩全栈/day14 常用模块/1.0时间模块.py")
50 print(result)
51
52
53 # system()执行系统命令(危险函数)
54 #result = os.system('ls -al') #获取隐藏文件
55 #print(result)
56
57
58 #环境变量
59 '''
60 环境变量就是一些命令的集合
61 操作系统的环境变量就是操作系统在执行系统命令时搜索命令的目录的集合
62 '''
63 #getenv() 获取系统的环境变量
64 result = os.getenv('PATH')
65 print(result.split(':'))
66
67 #putenv() 将一个目录添加到环境变量中(临时增加仅对当前脚本有效)
68 #os.putenv('PATH','/home/sy/下载')
69 #os.system('syls')
70
71 #exit() 退出终端的命令
72
73 #os模块中的常用值
74 #curdir 表示当前文件夹 .表示当前文件夹 一般情况下可以省略
75 print(os.curdir)
76
77 #pardir 表示上一层文件夹 ..表示上一层文件夹 不可省略!
78 print(os.pardir)
79
80 #os.mkdir('../../../man')#相对路径 从当前目录开始查找
81 #os.mkdir('/home/sy/man1')#绝对路径 从根目录开始查找
82
83 #name 获取代表操作系统的名称字符串
84 print() #posix -> linux或者unix系统 nt -> window系统
85
86 #sep 获取系统路径间隔符号 window ->\ linux ->/
87 print(os.sep)
88
89 #extsep 获取文件名称和后缀之间的间隔符号 window & linux -> .
90 print(os.extsep)
91
92 #linesep 获取操作系统的换行符号 window -> \r\n linux/unix -> \n
93 print(repr(os.linesep))
94
95
96
97 #导入os模块
98 import os
99
100 #以下内容都是os.path子模块中的内容
101
102 #abspath() 将相对路径转化为绝对路径
103 path = './boys'#相对
104 result = os.path.abspath(path)
105 print(result)
106
107 #dirname() 获取完整路径当中的目录部分 & basename()获取完整路径当中的主体部分
108 path = '/home/sy/boys'
109 result = os.path.dirname(path)
110 print(result)
111
112 result = os.path.basename(path)
113 print(result)
114
115 #split() 将一个完整的路径切割成目录部分和主体部分
116 path = '/home/sy/boys'
117 result = os.path.split(path)
118 print(result)
119
120 #join() 将2个路径合并成一个
121 var1 = '/home/sy'
122 var2 = '000.py'
123 result = os.path.join(var1,var2)
124 print(result)
125
126 #splitext() 将一个路径切割成文件后缀和其他两个部分,主要用于获取文件的后缀
127 path = '/home/sy/000.py'
128 result = os.path.splitext(path)
129 print(result)
130
131 #getsize() 获取文件的大小
132 path = '/home/sy/000.py'
133 result = os.path.getsize(path)
134 print(result)
135
136 #isfile() 检测是否是文件
137 path = '/home/sy/000.py'
138 result = os.path.isfile(path)
139 print(result)
140
141 #isdir() 检测是否是文件夹
142 result = os.path.isdir(path)
143 print(result)
144
145 #islink() 检测是否是链接
146 path = '/initrd.img.old'
147 result = os.path.islink(path)
148 print(result)
149
150 #getctime() 获取文件的创建时间 get create time
151 #getmtime() 获取文件的修改时间 get modify time
152 #getatime() 获取文件的访问时间 get active time
153
154 import time
155
156 filepath = '/home/sy/下载/chls'
157
158 result = os.path.getctime(filepath)
159 print(time.ctime(result))
160
161 result = os.path.getmtime(filepath)
162 print(time.ctime(result))
163
164 result = os.path.getatime(filepath)
165 print(time.ctime(result))
166
167 #exists() 检测某个路径是否真实存在
168 filepath = '/home/sy/下载/chls'
169 result = os.path.exists(filepath)
170 print(result)
171
172 #isabs() 检测一个路径是否是绝对路径
173 path = '/boys'
174 result = os.path.isabs(path)
175 print(result)
176
177 #samefile() 检测2个路径是否是同一个文件
178 path1 = '/home/sy/下载/001'
179 path2 = '../../../下载/001'
180 result = os.path.samefile(path1,path2)
181 print(result)
182
183
184 #os.environ 用于获取和设置系统环境变量的内置值
185 import os
186 #获取系统环境变量 getenv() 效果
187 print(os.environ['PATH'])
188
189 #设置系统环境变量 putenv()
190 os.environ['PATH'] += ':/home/sy/下载'
191 os.system('chls')




实践:


1 在Linux和Mac平台上,该函数会原样返回path,在windows平台上会将路径中所有字符转换为小写,并将所有斜杠转换为饭斜杠。
2 >>> os.path.normcase('c:/windows\\system32\\')
3 'c:\\windows\\system32\\'
4
5
6 规范化路径,如..和/
7 >>> os.path.normpath('c://windows\\System32\\../Temp/')
8 'c:\\windows\\Temp'
9
10 >>> a='/Users/jieli/test1/\\\a1/\\\\aa.py/../..'
11 >>> print(os.path.normpath(a))
12 /Users/jieli/test1
13
14
15 os路径处理
16 #方式一:推荐使用
17 import os
18 #具体应用
19 import os,sys
20 possible_topdir = os.path.normpath(os.path.join(
21 os.path.abspath(__file__),
22 os.pardir, #上一级
23 os.pardir,
24 os.pardir
25 ))
26 sys.path.insert(0,possible_topdir)
27
28
29 #方式二:不推荐使用
30 os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
31
32
33
34 import os
35
36 # 获取某一个文件夹下所有的子文件以及子文件夹的名字
37 res = os.listdir('.')
38 print(res)
39
40 #大小
41 size=os.path.getsize(r'G:\2020老男孩全栈\2020老男孩egon老师福利\day22\代码\01 时间模块.py')
42 print(size)
43
44 # 应用程序----->>"ls /"
45
46 # os.system("ls /")
47
48 #规定:key 与value必须是字符串
49
50 os.environ['aaaaaaaaaa']='111'
51 print(os.environ)
52
53 print(os.path.dirname(r'/a/b/c/d.txt'))
54 print(os.path.basename(r'/a/b/c/d.txt'))
55
56
57 print(os.path.isfile(r'笔记.txt'))
58 print(os.path.isfile(r'aaa'))
59 print(os.path.isdir(r'aaa'))
60
61 print(os.path.join('a','/','b','c','d'))
62
63
64
65 # 推荐用这种
66 BASE_DIR=os.path.dirname(os.path.dirname(__file__))
67 # print(BASE_DIR)
68
69
70 # BASE_DIR=os.path.normpath(os.path.join(
71 # __file__,
72 # '..',
73 # '..'
74 # ))
75 # print(BASE_DIR)
76
77 # 在python3.5之后,推出了一个新的模块pathlib
78 from pathlib import Path
79
80 # res = Path(__file__).parent.parent
81 # print(res)
82
83
84 # res=Path('/a/b/c') / 'd/e.txt'
85 # print(res)
86
87 # print(res.resolve())