OS模块的常见用法
在Python中,OS模块提供了非常丰富的方法用来处理文件和目录。常见的用法如下所示:
1. os.getcwd()
得到当前工作目录,即当前Python脚本工作的目录。
>>> import os
>>> os.getcwd() #查看当前目录
'E:\\课堂笔记\\第二十三节(Windows)(2019年6月1日)\\笔记和资料'
2. os.chdir()
改变当前工作目录。
>>> os.getcwd()
'E:\\课堂笔记\\第二十三节(Windows)(2019年6月1日)\\笔记和资料'
>>> os.chdir("E:\\课堂笔记") #改变工作目录到E:\\课堂笔记
>>> os.getcwd() #查看当前工作目录
'E:\\课堂笔记'
3. os.listdir()
显示当前目录下所有文件和目录
>>> os.chdir("E:\\课堂笔记\\第二十三节(Windows)(2019年6月1日)\\笔记和资料")
>>> os.listdir() #显示当前目录下的所有文件
['dict.txt', 'dnsbrute.py', 'dnsyuming_dict.txt', 'DNS二级域名爆破.docx', 'DNS区域 传送漏洞实验.docx', 'erjiyumingbaopo.py', 'WINDOWS理论课11.doc', 'zy.txt', '下午作 业']
4. os.path.isdir()
判断是否是一个目录(即,该目录必须为文件夹),返回值是:True 或 False
>>> os.path.isdir("下午作业") #目录——>必须是文件夹
True
5. os.path.isfile()
判断是否是一个文件,返回值为:True 或 False
- 必须为绝对路径
- 必须是该一目录下的一个文件
>>> os.path.isfile("E:\\课堂笔记\\第二十三节(Windows)(2019年6月1日)\\笔记和资料\\zy.txt")
True
6. os.mkdir()
新建目录
>>> os.listdir()
['dict.txt', 'dnsbrute.py', 'dnsyuming_dict.txt', 'DNS二级域名爆破.docx', 'DNS区域 传送漏洞实验.docx', 'erjiyumingbaopo.py', 'WINDOWS理论课11.doc', 'zy.txt', '下午作 业']
>>> os.mkdir("test")
>>> os.listdir()
['dict.txt', 'dnsbrute.py', 'dnsyuming_dict.txt', 'DNS二级域名爆破.docx', 'DNS区域 传送漏洞实验.docx', 'erjiyumingbaopo.py', 'test', 'WINDOWS理论课11.doc', 'zy.txt', '下午作业']
7. os.makedirs()
新建目录下面有子目录
>>> os.makedirs("test2\\1\\2")
>>> os.listdir()
['dict.txt', 'dnsbrute.py', 'dnsyuming_dict.txt', 'DNS二级域名爆破.docx', 'DNS区域 传送漏洞实验.docx', 'erjiyumingbaopo.py', 'test', 'test2', 'WINDOWS理论课11.doc', 'zy.txt', '下午作业']
8. os.rmdir()
只能删除目录为空的目录(即,文件夹),否则不能删除;要删除有子目录的文件,可以使用shutil.rmtree()
>>> os.listdir()
['dict.txt', 'dnsbrute.py', 'dnsyuming_dict.txt', 'DNS二级域名爆破.docx', 'DNS区域 传送漏洞实验.docx', 'erjiyumingbaopo.py', 'test', 'test2', 'WINDOWS理论课11.doc', 'zy.txt', '下午作业']
>>> os.rmdir("test")
>>> os.rmdir("test2")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
OSError: [WinError 145] 目录不是空的。: 'test2'
>>> import shutil
>>> shutil.rmtree("test2")
>>> os.listdir()
['dict.txt', 'dnsbrute.py', 'dnsyuming_dict.txt', 'DNS二级域名爆破.docx', 'DNS区域 传送漏洞实验.docx', 'erjiyumingbaopo.py', 'WINDOWS理论课11.doc', 'zy.txt', '下午作 业']
9. os.remove()
删除文件
>>> os.listdir()
['123.txt', 'dict.txt', 'dnsbrute.py', 'dnsyuming_dict.txt', 'DNS二级域名爆破.docx', 'DNS区域传送漏洞实验.docx', 'erjiyumingbaopo.py', 'WINDOWS理论课11.doc', 'zy.txt', '下午作业']
>>> os.remove("123.txt")
>>> os.listdir()
['dict.txt', 'dnsbrute.py', 'dnsyuming_dict.txt', 'DNS二级域名爆破.docx', 'DNS区域 传送漏洞实验.docx', 'erjiyumingbaopo.py', 'WINDOWS理论课11.doc', 'zy.txt', '下午作 业']
10. os.system()
运行shell命令和PowerShell命令。
扫描二维码关注公众号,回复:
6777048 查看本文章
>>> os.system("cmd")
Microsoft Windows [版本 10.0.17134.765]
(c) 2018 Microsoft Corporation。保留所有权利。
E:\课堂笔记\第二十三节(Windows)(2019年6月1日)\笔记和资料>python
Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 22:22:05) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.system("powershell")
Windows PowerShell
版权所有 (C) Microsoft Corporation。保留所有权利。
PS E:\课堂笔记\第二十三节(Windows)(2019年6月1日)\笔记和资料>
11. os.sep
含义:主要用于系统路径中的分隔符
Windows系统通过是“\”,Linux类系统如Ubuntu的分隔符是“/”,而苹果Mac OS系统中是“:”
>>> import os
>>> os.sep
'\\'
12. os.path.split()
返回一个路径的目录名和文件名。(必须为绝对路径)
>>> os.path.split("E:\\课堂笔记\\第二十三节(Windows)(2019年6月1日)\\笔记和资料")
('E:\\课堂笔记\\第二十三节(Windows)(2019年6月1日)', '笔记和资料')
13. os.path.splitdrive()
以盘进行拆分路径
>>> import os
>>> os.path.splitdrive("E:\\课堂笔记\\第二十三节(Windows)(2019年6月1日)\\笔记和资料")
('E:', '\\课堂笔记\\第二十三节(Windows)(2019年6月1日)\\笔记和资料')
14. os.path.join()
组合路径
>>> path="d:\\python_code\\csv"
>>> f="1.txt"
>>> os.path.join(path,f)
'd:\\python_code\\csv\\1.txt'
15. os.path.exists()
用来检验给出的路径是否存在,返回值为:True或者False。
>>> import os
>>> os.path.exists("E:\课堂笔记\第二十三节(Windows)(2019年6月1日)")
True
>>> os.path.exists("E:\课堂笔记\第二十四节(2019年6月2日)Windows")
True
>>> os.path.exists("E:\课堂笔记\第二十四节(2019年6月2日)Windows\\1.txt")
False
16. os.path.abcpath()
获取绝对路径。只能显示该CMD目录下的。
>>> os.path.abspath("下午作业")
'E:\\课堂笔记\\第二十三节(Windows)(2019年6月1日)\\笔记和资料\\下午作业'
17. os.path.basename()
去掉目录路径,返回文件名
>>> os.path.basename("E:\\课堂笔记\\第二十三节(Windows)(2019年6月1日)\\笔记和资料\\下午作业")
'下午作业'
18. os.path.dirname()
去掉文件名,返回目录路径
>>> os.path.dirname("E:\\课堂笔记\\第二十三节(Windows)(2019年6月1日)\\笔记和资料\\ 下午作业")
'E:\\课堂笔记\\第二十三节(Windows)(2019年6月1日)\\笔记和资料'
19. os.path.splitext()
分离文件名与扩展名
>>> os.path.splitext("E:\\课堂笔记\\第二十三节(Windows)(2019年6月1日)\\笔记和资料\\ 下午作业\\zy.txt")
('E:\\课堂笔记\\第二十三节(Windows)(2019年6月1日)\\笔记和资料\\ 下午作业\\zy', '.txt')
>>> os.path.splitext("zy.txt")
('zy', '.txt')
20. os.path.getsize()
获取文件大小,如果name为目录,返回0;如果为文件,则返回文件的字节数。
>>> os.path.getsize("E:\\课堂笔记")
8192
>>> os.path.getsize("E:\\课堂笔记\\第二十三节(Windows)(2019年6月1日)")
0
>>> os.path.getsize("E:\\课堂笔记\\第二十三节(Windows)(2019年6月1日)\\笔记和资料")
4096
>>> os.path.getsize("E:\\课堂笔记\\第二十三节(Windows)(2019年6月1日)\\笔记和资料\\dict.txt")
356