利用Python的os函数查找并遍历文件夹
简介
Python是一种高级编程语言,它非常适合数据分析、机器学习、科学计算以及脚本编写。Python的os函数是一个强大的工具,它提供了许多与操作系统相关的功能。
其中,os.walk()函数可以用来查找并遍历文件夹,这对于需要处理多个文件或文件夹的程序而言,尤为重要。
本文将介绍如何使用Python的os.walk()函数来查找和遍历文件夹,以及如何使用其它os函数来操作文件夹和文件。
os.walk()函数的使用方法
os.walk()函数是Python中最常用的文件遍历方法之一,它会生成一个三元组的迭代器,每一个三元组包含当前路径、当前目录下的子目录列表和当前目录下的文件列表。
代码如下:
import os
for root, dirs, files in os.walk(".", topdown=False):
for name in files:
print(os.path.join(root, name))
for name in dirs:
print(os.path.join(root, name))
上面的代码会遍历当前路径下的所有文件夹和文件,并将它们的绝对路径打印出来。
在os.walk()函数中,第一个参数是要遍历的根路径,topdown参数表示遍历方式,当topdown=True时,它会从根路径开始遍历,当topdown=False时,它会从最底层开始遍历。
遍历文件夹的最佳实践
在使用os.walk()函数来遍历文件夹时,有一些最佳实践可以提高程序的效率和可读性。
1.使用绝对路径
使用绝对路径可以避免在不同的文件夹下遍历相同文件夹时出现的混淆问题。我们可以使用os.path.abspath()函数将相对路径转换为绝对路径。
代码如下:
import os
folder = "./example_folder"
abs_folder = os.path.abspath(folder)
for root, dirs, files in os.walk(abs_folder, topdown=False):
for name in files:
print(os.path.join(root, name))
for name in dirs:
print(os.path.join(root, name))
2.避免遍历不必要的文件夹
在使用os.walk()函数遍历文件夹时,可以使用if条件语句来避免遍历不必要的文件夹,这可以提高程序的效率和速度。
代码如下:
import os
folder = "./example_folder"
abs_folder = os.path.abspath(folder)
for root, dirs, files in os.walk(abs_folder, topdown=False):
if "ignore_folder" in dirs:
dirs.remove("ignore_folder")
for name in files:
print(os.path.join(root, name))
for name in dirs:
print(os.path.join(root, name))
3.使用os.path.join()函数拼接路径
在处理文件和文件夹路径时,使用os.path.join()函数可以保证代码的可移植性。
代码如下:
import os
folder = "./example_folder"
abs_folder = os.path.abspath(folder)
for root, dirs, files in os.walk(abs_folder, topdown=False):
for name in files:
file_path = os.path.join(root, name)
print(file_path)
for name in dirs:
dir_path = os.path.join(root, name)
print(dir_path)
其中,os.path.join()函数会根据操作系统的不同自动选择斜杠或反斜杠作为路径分隔符。
os函数的常用方法
除了os.walk()函数外,Python的os模块还提供了许多其他与操作系统相关的功能。
1.创建文件夹
使用os.mkdir()函数可以创建新的文件夹。
代码如下:
import os
folder = "new_folder"
if not os.path.exists(folder):
os.mkdir(folder)
其中,os.path.exists()函数可以检查路径是否存在。
2.重命名文件夹
使用os.rename()函数可以重命名已经存在的文件夹。
代码如下:
import os
folder = "old_folder"
new_folder = "new_folder"
if os.path.exists(folder):
os.rename(folder, new_folder)
3.删除文件夹
使用os.rmdir()函数可以删除一个已经存在的空文件夹。
代码如下:
import os
folder = "old_folder"
if os.path.exists(folder):
os.rmdir(folder)
如果要删除非空文件夹,可以使用shutil模块的shutil.rmtree()函数,但是要小心使用,因为它会将文件夹及其所有内容一并删除。
4.更改工作目录
使用os.chdir()函数可以更改Python的工作目录。
代码如下:
import os
os.chdir("./example_folder")
这将把Python的工作目录更改到"./example_folder"。
5.列出目录内容
使用os.listdir()函数可以列出一个目录中的所有文件和文件夹。
代码如下:
import os
folder = "example_folder"
if os.path.exists(folder):
contents = os.listdir(folder)
print(contents)
结论
Python的os模块提供了许多与操作系统相关的功能,使用os.walk()函数可以遍历文件夹。在遍历文件夹时,我们可以使用绝对路径、避免遍历不必要的文件夹和使用os.path.join()函数来提高程序的效率和可移植性。
除了os.walk()函数外,Python的os模块还提供了其他常用的函数,如创建文件夹、重命名文件夹、删除文件夹、更改工作目录和列出目录内容等。这些函数可以帮助我们更加方便地操作文件夹和文件。
