os模块和os.path模块用于对目录或者文件进行操作
os模块与操作系统相关,可以调用系统文件
打开记事本程序
"""直接输入notepad并不能打开,会出现红色乱码,
这可能是因为我的python和记事本不在一个磁盘上
上网查了一下,可能是环境变量path没有添加system32目录"""
import os
os.system("notepad.exe")
"""写了路径之后就能够正常打开"""
import os
os.system("%SystemRoot%/system32/notepad.exe")
打开文件:
"""使用startfile方法
要找到这个文件所在的位置,找到路径"""
os.startfile('C:\Program Files (x86)TencentQQBin\qq.exe')
os模块操作目录的相关函数
| 函数 | 说明 |
| getcwd() | 返回当前的工作目录 |
| listdir(path) | 返回指定路径下的文件和目录信息 |
| mkdir(path,mode) | 创建目录 |
| makedirs(path1/path2...,mode) | 创建多级目录 |
| rmdir(path) | 删除目录 |
| removedirs(path1/path2...) | 删除多级目录 |
| chdir(path) | 将path设置为当前目录 |
getcwd():返回当前目录,这里的路径用的是相对路径
print(os.getcwd()) """结果为: F:pythonvenvlearning"""
新建目录与删除目录,这里删除目录只能删除空目录
"""这里的./代表当前目录的意思,在当前目录新建一个名为try的目录"""
os.mkdir('./try')
"""在当前目录新建了一个多级目录"""
os.makedirs('A/B/C')
"""删除目录try,只能删除空目录"""
os.rmdir('try')
"""删除多级目录
如果在B中新建一个文件,再执行这条命令的话,只会删除C目录,AB目录保留"""
os.removedirs('A/B/C')
os.path模块操作目录相关函数
| 函数 | 说明 |
| abspath(path) | 用于获取文件或者目录的绝对路径(文件不存在也不会报错) |
| exists(path) | 用于判断文件或目录是否存在,若存在返回true,否则返回false |
| join(path,name) | 将目录与目录或者文件名拼接起来 |
| splitext() | 分离文件名和扩展名 |
| basename(path) | 从一个目录中提取文件名 |
| dirname(path) | 从一个路径中提取文件路径,不包括文件名 |
| isdir(path) | 用于判断是否为目录 |
exists(path)
"""通过相对路径找到与当前操作文件同在一个目录下的demo目录,
看其中demo.py是否存在,答案是True"""
print(os.path.exists('demo/demo.py'))
"""判断当前目录中是否有如下两个文件,答案分别是True,False"""
print(os.path.exists('learning2.py'))
print(os.path.exists('demo23.py'))
split和splitext()方法
"""split拆分目录与文件"""
print(os.path.split('F:python\venvlearninglearning1.py'))
"""结果为:('F:\python\venv\learning', 'learning1.py')"""
"""splittext拆分文件与后缀名"""
print(os.path.splitext('learning1.py'))
"""结果为:('learning1', '.py')"""
basename(path)方法和dirname(path)方法
"""提取文件名,结果为:learning1.py"""
print(os.path.basename('F:python\venvlearninglearning1.py'))
"""提取目录名,结果为:F:pythonvenvlearning"""
print(os.path.dirname('F:python\venvlearninglearning1.py'))
"""判断是否是目录,结果为:False"""
print(os.path.isdir('F:python\venvlearninglearning1.py'))
如何实现打开指定目录中所有py文件的操作:
import os
path=os.getcwd()
lst=os.listdir(path)
for name in lst:
if name.endswith('.py'):
print(name)
使用walk方法进行遍历:
"""这里topdown=True是优先从top目录进行遍历,False则是从子目录优先遍历
返回的是一个三元组(root,dirs,files)
root是地址,dirs是文件夹中的所有目录(不包括子目录)
files是文件夹中所有的文件(不包括子目录)"""
path=os.getcwd()
for root,dirs,files in os.walk(path,topdown=True):
print('root:',root)
print('dirs:',dirs)
print('files:',files)
"""遍历其中的目录,并将路径与目录名连接起来
遍历其中的文件,并将路径与文件名连接起来"""
path=os.getcwd()
for root,dirs,files in os.walk(path,topdown=True):
for dir in dirs:
print(os.path.join(root,dir))
for file in files:
print(os.path.join(root,file))



