Python 创建文件夹如果存在

在编程中,我们经常需要与文件和文件夹进行交互。在Python中,我们可以使用内置的os模块来创建、移动、删除和重命名文件夹。根据实际需求,我们可能需要在创建文件夹之前检查它是否已经存在。在本文中,我们将详细讨论如何使用Python创建文件夹,并处理已存在的情况。
1. 使用os模块创建文件夹
Python的os模块提供了一些方法来处理文件和文件夹。要创建文件夹,我们可以使用os.mkdir()方法。该方法接受一个路径作为参数,并在指定路径上创建一个新的文件夹。
下面是一个简单的示例代码,展示了如何使用os.mkdir()方法创建一个名为”New_Folder”的文件夹:
import os
# 定义文件夹路径
folder_path = "./New_Folder"
# 创建文件夹
os.mkdir(folder_path)
运行上述代码后,它将在当前目录下创建一个名为”New_Folder”的文件夹。
但是,如果我们再次运行上述代码,将会遇到一个FileExistsError异常,提示文件夹已经存在。这时,我们需要在代码中添加一些逻辑来处理已存在的情况。
2. 检查文件夹是否存在
在创建文件夹之前,我们可以使用os.path.exists()方法检查文件夹是否已经存在。该方法接受一个路径作为参数,并返回一个布尔值,表示路径是否存在。
下面是一个示例代码,展示了如何使用os.path.exists()方法检查文件夹是否存在:
import os
# 定义文件夹路径
folder_path = "./New_Folder"
# 检查文件夹是否存在
if not os.path.exists(folder_path):
# 创建文件夹
os.mkdir(folder_path)
print("文件夹创建成功!")
else:
print("文件夹已经存在!")
运行上述代码,如果”New_Folder”文件夹不存在,则会创建它并打印”文件夹创建成功!”;如果文件夹已经存在,则会打印”文件夹已经存在!”。
3. 递归创建文件夹
在某些情况下,我们可能需要创建多层次的文件夹。例如,创建一个名为”Parent_Folder/Child_Folder”的文件夹,即在已存在的”Parent_Folder”文件夹中创建一个”Child_Folder”文件夹。在这种情况下,我们可以使用os.makedirs()方法来递归地创建文件夹。
下面是一个示例代码,展示了如何使用os.makedirs()方法递归地创建文件夹:
import os
# 定义文件夹路径
folder_path = "./Parent_Folder/Child_Folder"
# 递归创建文件夹
os.makedirs(folder_path, exist_ok=True)
print("文件夹创建成功!")
运行上述代码后,它将在当前目录下创建一个名为”Parent_Folder/Child_Folder”的文件夹。如果已经存在,则不会引发异常。
4. 使用try-except块处理异常
除了使用os.path.exists()方法来检查文件夹是否存在外,我们还可以使用try-except块来捕获FileExistsError异常,并处理已存在的情况。
下面是一个示例代码,展示了如何使用try-except块处理已存在的文件夹:
import os
# 定义文件夹路径
folder_path = "./New_Folder"
try:
# 创建文件夹
os.mkdir(folder_path)
print("文件夹创建成功!")
except FileExistsError:
print("文件夹已经存在!")
上述代码将尝试创建一个名为”New_Folder”的文件夹。如果文件夹已经存在,将会捕获FileExistsError异常,并打印”文件夹已经存在!”。
通过使用try-except块,我们可以更加灵活地处理文件夹已存在的情况,并在发生异常时执行其他操作。
5. 综合示例
下面的例子将演示一个综合的应用场景。假设我们要在当前目录下创建多层次的文件夹,如果其中某一级文件夹已经存在,则创建下一级文件夹时不会引发异常。
import os
# 声明文件夹路径
folder_path = "./Parent_Folder/Child_Folder/Grandchild_Folder"
# 按层次逐级检查文件夹是否存在
for folder in folder_path.split("/"):
current_folder_path = os.path.join(os.getcwd(), folder)
if not os.path.exists(current_folder_path):
os.mkdir(current_folder_path)
print(f"文件夹[{folder}] 创建成功!")
else:
print(f"文件夹[{folder}] 已经存在!")
上述代码将逐级检查文件夹路径中的每一级文件夹是否存在。如果某一级文件夹不存在,则创建它并打印”文件夹[folder_name] 创建成功!”;如果已经存在,则打印”文件夹[folder_name] 已经存在!”。
结论
Python的os模块提供了一些方法来创建、删除、移动和重命名文件夹。在创建文件夹之前,我们可以使用os.path.exists()方法或try-except块来检查文件夹是否已经存在。递归创建文件夹时,请使用os.makedirs()方法。
在实际应用中,我们可以根据需求选择适合的方法来创建文件夹,并对已存在的情况进行处理。
极客教程