os模块是python内置的与操作系统功能、文件系统相关的模块,该模块的语句执行结果通常与操作系统有关,在不同的操作系统上运行,得到的结果可能不一样。os模块与os.path模块用于对目录或文件进行操作。
1、os模块常用函数
(1)通过命令行打开操作系统自带的软件
import os
os.system('notepad.exe') # 打开记事本
os.system('calc.exe') # 打开计算器
(2)打开可执行文件(自己下载的软件)
以打开QQ为例。首先找到QQ的可执行文件的位置(右键图标->打开文件位置->复制当前目录->将可执行文件的名称加在后面 ->将’/‘变为’//’)
import os
os.startfile('C:\\Program Files (x86)\\Tencent\\QQ\\Bin\\QQScLauncher.exe')
程序运行后就会打开QQ了
(3)对目录进行操作
- getcwd():返回当前的工作目录【cwd=current work directory】
- listdir(path):返回指定目录下的文件和目录信息
- mkdir(path[,mode]):创建目录【mk=make】
- makedirs(path1/path2/…[,mode]):创建多级目录
- rmdir(path):删除目录【rm=remove】
- removedirs(path1/path2…):删除多级目录
- chdir(path):将path设置为当前工作目录【change】
getcwd()返回当前的工作目录
import os
print(os.getcwd())
'''
D:\py文件\Hong YiLee\homework3
'''
listdir(path):返回指定目录下的文件和目录信息
这里的例子是返回当前文件夹的所有文件。由于需要进入上一级文件夹才能访问文件夹里的文件,所以使用..\
退到上级
import os
print(os.listdir('..\homework3'))
'''
['.idea', '.ipynb_checkpoints', 'a.txt', 'bc_0WIN053OA34CY6NK_09.db',
'copy_husky.jpg', 'demo1.py', 'food-11', 'food-11.zip', 'husky_little.jpg',
'hw3_CNN.ipynb', 'hw3_cnn.py', 'Untitled.ipynb', '__pycache__']
'''
mkdir()创建目录
makedirs(path1/path2):创建多级目录
os.removedirs(path1/path2…) 删除多级目录
当移除的A目录下非空,需要将A下的所有目录都标注才能删除
os.removedirs('A/B/C')
chdir(path)将path设置为当前工作目录(注意不需要写到具体的文件)
import os
os.chdir('D:\\py文件\\HelloWorld')
print(os.getcwd())
'''
D:\py文件\HelloWorld
'''
2、os.path模块操作目录的常用函数
- abspath(path):获取文件或目录的绝对路径(abs=absolute绝对)
- exists(path):用于判断文件或者目录是否存在,返回值为True则存在,为False则不存在
- join(path,name):将目录与目录或文件名拼接起来
- splitext():分离文件名和扩展名
- basename(path):从一个目录中提取文件名
- dirname(path):从一个路径中提取文件路径,不包括文件名
- isdirpath(path):判断是否为文件路径
(1)abspath(path):获取文件或目录的绝对路径(文件位置)
import os.path
print(os.path.abspath('demo1'))
'''
D:\py文件\Hong YiLee\homework3\demo1
'''
(2)exists(path):用于判断文件或者目录是否存在,返回值为True则存在,为False则不存在
import os.path
print(os.path.exists('demo2.py'))
'''
True
'''
(3)join(path,name):将目录与目录或文件名拼接起来
实际上文件并没有被复制到该路径下,而是取他的路径名
import os.path
print(os.path.join('D:\\py文件\\Hong YiLee','demo1.py'))
'''
D:\py文件\Hong YiLee\demo1.py
'''
(4)splitext():分离文件名和扩展名
import os.path
print(os.path.split('D:\\py文件\\Hong YiLee\\homework3\\demo1.py'))
print(os.path.splitext('demo1.py'))
'''
('D:\\py文件\\Hong YiLee\\homework3', 'demo1.py')
('demo1', '.py')
'''
(5)basename(path):从一个目录中提取文件名
import os.path
print(os.path.basename('D:\\py文件\\Hong YiLee\\homework3\\demo1.py'))
'''
demo1.py
'''
** (6)dirname(path):从一个路径中提取文件路径,不包括文件名**
import os.path
print(os.path.dirname('D:\\py文件\\Hong YiLee\\homework3\\demo1.py'))
'''
D:\py文件\Hong YiLee\homework3
'''
(7)isdirpath(path):判断是否为文件路径
import os.path
print(os.path.isdir('D:\\py文件\\Hong YiLee\\homework3\\demo1.py'))
print(os.path.isdir('D:\\py文件\\Hong YiLee\\homework3'))
'''
False
True
'''
3、课堂案例
(1)要求列出指定目录下的所有Python文件
import os
path = os.getcwd() # 获取当前目录
lst = os.listdir(path) # 获取当前目录下的所有文件
for filename in lst: # 遍历文件
if filename.endswith('.py'):
print(filename)
'''
demo2.py
hw3_cnn.py
'''
(2)遍历某目录下的所有文件(该目录下有子目录)
首先自己创建一个复杂的包含关系的目录
补充知识:
os.walk(path)函数:遍历path下的所有文件夹(包括文件夹中的文件)和文件,返回generator object(生成器对象)是一个元祖,包含目录的路径、所有文件夹、所有文件,每个元组的元素都是一个列表。
按照下面的方法输出一层一层地遍历。第一层分别返回目录的路径、文件夹、文件;第二层根据第一层的文件夹再次输出目录的路径、文件夹、文件。
import os
path = os.getcwd()
list_files = os.walk(path)
for dirpath, dirname, filenames in list_files:
print(dirpath)
print(dirname)
print(filenames)
print('----------------------------')
'''
D:\py文件\Hong YiLee\homework3\test
['newdir']
['demo3.py']
----------------------------
D:\py文件\Hong YiLee\homework3\test\newdir
['sub']
['aaa.py', 'bbb.py']
----------------------------
D:\py文件\Hong YiLee\homework3\test\newdir\sub
[]
['ccc.py']
----------------------------
'''
由于我们的目的是遍历文件,所以要在每层输出包含的文件夹和文件即可,如下:
import os
path = os.getcwd()
list_files = os.walk(path)
for dirpath, dirname, filenames in list_files:
'''
print(dirpath)
print(dirname)
print(filenames)
print('----------------------------')
'''
for dir in dirname:
print(os.path.join(dirpath, dir))
for file in filenames:
print(os.path.join(dirpath, file))
print('----------------------------')
'''
D:\py文件\Hong YiLee\homework3\test\newdir
D:\py文件\Hong YiLee\homework3\test\demo3.py
----------------------------
D:\py文件\Hong YiLee\homework3\test\newdir\sub
D:\py文件\Hong YiLee\homework3\test\newdir\aaa.py
D:\py文件\Hong YiLee\homework3\test\newdir\bbb.py
----------------------------
D:\py文件\Hong YiLee\homework3\test\newdir\sub\ccc.py
----------------------------
'''