python——os、os.path模块


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
----------------------------

'''

猜你喜欢

转载自blog.csdn.net/qq_46126258/article/details/113740047