python之OS模块(一)

Python OS 模块

os模块是python提供用于访问操作系统的标准模块,对目录和文件操作提供了非常多的方法。
本篇文章主要介绍一些关于os模块中的一些简单的对于文件和文件夹的基本操作的函数的用法,包括获取或改变当前的工作目录,遍历指定路径下的所有的文件文件夹以及子文件夹,创建与删除以及重命名文件夹等操作。
首先将os模块导入import os

1. 得到当前操作系统名称os.name

如果你的操作系统是Windows(Windows的操作系统是NT内核),使用os.name会返回’nt’,如果你的操作系统是Linux/Unix(内核是posix)会返回’posix’.

2. 获取或者改变当前的工作目录

2.1 获取当前工作目录os.getcwd()

使用os.getcwd()会返回你的当前工作目录,比如当前我使用的工作目录是F盘的test文件夹,便会返回’F:\test’。

2.2 改变当前工作目录os.chdir(‘你要使用的工作路径’)

现在我要将工作路径改变成F盘test文件夹下的A文件夹,那么我就可以使用os.chdir('F:\\test\\A')进行改变。
此时再获取当前的工作目录的话就会返回’F:\test\A’。
chdir实际上是change directory缩写取了change的前两个字母,directory的前三个字母,这样是不是一下子就可以记住。

python之OS模块(一)_第1张图片

3. 获取路径下的文件和文件夹列表os.listdir(‘你要获取的路径’)

os.listdir()如果不指定路径会返回当前工作目录下的文件和文件夹列表,也可指定任意路径便会返回指定路径下所有的文件和文件夹,比如我的F盘test文件夹下有一个文件夹A和一个excel与一个ppt,那么使用os.listdir('F:\\test')则会返回[‘A’, ‘EXCEL.xlsx’, ‘PPT.pptx’]。

4. 遍历目录os.walk(‘你要遍历的路径’)

os.listdir()只能返回你指定的路径下的所有文件和文件夹,如果要遍历路径下包含子目录下的所有文件和文件夹那么便要使用os.walk()了,os.walk()默认使用从上到下的遍历方式扫描该目录下所有的文件夹以及文件,先从当前工作目录扫描,再延伸到子文件夹下,扫描的会有三部分组成,第一部分是当前的目录是哪个,第二部分是当前目录下有哪些子目录即文件夹,第三部分是当前目录下的文件。

for curdir,dir, file in os.walk('F:\\test'):
    print("=======================")
    print("当前目录:" + curdir)
    print("子目录:" + str(dir))
    print("文件:" + str(file))

扫描F盘中的test文件夹,会返回:
python之OS模块(一)_第2张图片
我们可以看到先是扫描了test文件夹下所有的文件和文件夹,又扫描了test文件夹下A文件下所有的内容,最后扫描了A文件夹下B文件夹下所有的内容。
如果不想使用自上而下的扫描方式,想要使用自下而上的扫描方式,那么可以使用参数topdown=False来解决。同样扫描F盘中的test文件夹:

for curdir, dir, file in os.walk('F:\\test',topdown=False):
    print("====================")
    print("当前目录:" + curdir)
    print("子目录:" + str(dir))
    print("文件:" + str(file))

会返回:
python之OS模块(一)_第3张图片
可以看到它先扫描了最里层的B文件夹,最后才扫描了test文件夹。

5. 创建文件夹makedirectory

5.1 创建单层文件夹os.mkdir(‘你要生成的路径’)

os.mkdir()可以创建单个的文件夹,现在在test文件夹下创建一个名为new的文件夹:

print(os.listdir('F:\\test'))
os.mkdir("F:\\test\\new")
print(os.listdir('F:\\test'))

会得到:

我们可以发现test文件夹下多了一个new文件夹。但是如果创建一个已经存在的文件夹的话,会报错,比如我们使用以上代码再运行一遍会得到:
python之OS模块(一)_第4张图片

5.2 递归生成文件夹os.makedirs(‘你要生成的路径’)

os.makedirs给定一个路径,如果路径中有哪一层不存在的话,就自动创建直到最后。现在在test文件夹下创建一个new2的文件夹,new2文件夹中创建一个new3的文件夹:

print(os.listdir('F:\\test'))
os.makedirs('F:\\test\\new2\\new3')
print('============创建后====================')
print(os.listdir('F:\\test'))
print(os.listdir('F:\\test\\new2'))

会得到:

我们可以发现创建了一个new2的文件夹,并且在new2中创建了一个new3的文件夹。和创建单个文件夹的os.mkdir()不一样的是,os.makedirs中有一个参数exist_ok,默认情况下exist_ok=False如果路径存在会报错,但是如果设置成exist_ok=True,那么即使路径已经存在也不会报错。

6. 删除removedirectory

6.1 删除单个的文件夹os.rmdir(‘你要删除的路径’)

os.rmdir()可以删除单个的文件夹,需要注意的是,该命令只能删除空文件夹,一旦文件夹下有文件便会报错。比如我们将刚才创建的new文件夹删除,os.rmdir('F:\\test\\new')因为new是一个空文件夹,所有可以成功删除,但是如果我们删除test文件夹(非空)便会报错:
python之OS模块(一)_第5张图片

6.2 递归的删除文件夹os.removedirs(‘你要删除的路径’)

os.removedirs()可以递归的删除非空的文件夹,它会从子目录开始删除,一旦子目录是空的能够成功删除,则会依次尝试删除路径中中的每个父目录,直到所有的空文件夹都被删除。一旦子目录不能成功删除也同样会报错。比如我们将刚才创建的new2以及new2中的new3删除:

print(os.listdir(('F:\\test')))
os.removedirs('F:\\test\\new2\\new3')
print('============删除后====================')
print(os.listdir(('F:\\test')))

会得到:

因为子目录new3文件夹是空的,所以可以成功删除,删除new3后new2也变成空的文件夹,因此new2也别删除掉。

6.3 删除文件os.remove(‘你要删除的文件’)

os.remove()可以删除文件,比如:

print(os.listdir(('F:\\test')))
os.remove('F:\\test\\PPT.pptx')
print(os.listdir(('F:\\test')))

会得到:

可以发现PPT已经被成功删除。
但是如果删除一个正在使用的文件会报错:
python之OS模块(一)_第6张图片
os模块中还有一个os.unlink()函数,它的功能和os.remove()函数是一样的功能。

7. 重命名os.rename(‘原文件的名字’,‘要改成的名字’)

os.rename()可以将文件重命名,比如:

print(os.listdir())
os.rename('TXT.txt','TXT3.txt') 
print('============重命名后=============')
print(os.listdir())

会得到:

8. 有关目录

os.curdir 代表的是当前目录, 相当于.的作用,os.pardir代表上一级目录,相当于 …的作用。

os模块part1完结,撒花✿✿ヽ(°▽°)ノ✿,part2再见。

你可能感兴趣的:(python)