os模块与操作系统打交道
1.文件夹相关
1 os.makedirs('dir1/dir2') # 创建多级目录
2 os.removedirs('dir1/dir2') # 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
3 os.mkdir('dir3') # 创建单级目录
4 os.rmdir('dir3') # 删除单级空目录,若目录不为空则无法删除,报错
5 print(os.listdir(r'D:untitled2day 13')) # 列出路径下的所有文件夹
2.执行系统命令
1 os.system('dir') #执行操作系统的命令,没有返回值,适合做实际的操作,如删除文件
2 exec/eval执行的是字符串类型的代码
3 os.system()和os.popen执行的是字符串类型的命令行代码
4
5 程序要处理这些路径
6 ret = os.popen('dir')
7 s = ret.read()
8 print(s.split('
'))
3.工作路径
1 打印当前工作目录 2 print(os.getcwd()) # current work dir当前工作目录 3 4 切换当前工作目录 5 os.chdir('D:untitled2day14')
1 # 把路径中不符合规范的斜杠改成适合当前操作系统的斜杆
2 path = os.path.abspath(r'D:/untitled2/day14/os模块.py')
3 print(path)
4 # 能够将给出的相对路径改成绝对路径
5 path = os.path.abspath('os模块.py')
6 print(path)
7 # 切分路径,将路径中最后一个与其他分割开
8 path = os.path.split('D:/untitled2/day14/os模块.py')
9 print(path)
10
11 # 分开取文件名和文件夹
12 ret1 = os.path.dirname('D:/untitled2/day14/os模块.py')
13 ret2 = os.path.basename('D:/untitled2/day14/os模块.py')
14 print(ret1)
15 print(ret2)
16
17 # 判断路径是否存在
18 res = os.path.exists('D:/untitled2/day14/os模块.py')
19 print(res)
20
21 # 判断是否为文件夹:
22
23 print(os.path.isdir('D:/untitled2/day14'))
24
25 # 判断是否为文件
26 print(os.path.isfile('D:/untitled2/day14/os模块.py'))
27
28 # 查看文件大小
29 size = os.path.getsize('D:/untitled2/day14/os模块.py')
30 print(size)
4.os模块实战
1 # 打印文件夹中所有文件的大小
2 def func(path):
3 size_sum = 0
4 name_list = os.listdir(path)
5 for name in name_list:
6 path_abs = os.path.join(path, name)
7 if os.path.isdir(path_abs):
8 size = func(path_abs) # 如果是文件夹,将文件夹内文件的大小计算完毕后,将值返回到这里,而不是最后的返回值
9 size_sum += size
10 else:
11 size_sum += os.path.getsize(path_abs)
12 return size_sum
13
14
15 ret = func(r'D:untitled2')
16 print(ret)
1 # 循环方法打印文件夹中所有文件大小
2 lst = [r'D:untitled2']
3 size_sum = 0
4 while lst:
5 path = lst.pop() # 将路径从列表中取出来
6 path_list = os.listdir(path)
7 for name in path_list:
8 abs_path = os.path.join(path, name)
9 if os.path.isdir(abs_path):
10 lst.append(abs_path) # 如果判断路径是文件夹,将文件夹路径添加到列表中,添加的路劲先进后出,最早添加的最后调用
11 else:
12 size_sum += os.path.getsize(abs_path)
13 print(size_sum)