检查给定路径下是否存在一个文件夹,如果不存在,则在该路径下创建一个文件夹。

39

我想检查路径为

D:\LaptopData\ISIS project\test\d0_63_b4_01_18_ba\00_17_41_41_00_0e

是否存在名为“Output Folder”的文件夹,如果不存在则在该位置创建该文件夹。

请问有人可以提供解决方案吗?


1
你可以使用 os.path.exists('<folder_path>') 来检查文件夹是否存在。 - stud3nt
3
这回答解决了你的问题吗?如何在不出现异常情况下检查文件是否存在? - Emily
2
这个回答解决了你的问题吗?如何安全地创建嵌套目录? - Manthan Tilva
7个回答

66

最好的方法是使用os.makedirs,例如:

os.makedirs(name, mode=0o777, exist_ok=False)

递归目录创建函数。类似于mkdir(),但会创建包含叶子目录所需的中间级别目录。

mode参数传递给mkdir()以创建叶子目录;有关其解释方式,请参见mkdir()描述。要设置任何新创建的父目录的文件权限位,您可以在调用makedirs()之前设置umask。现有父目录的文件权限位不会更改。

>>> import os
>>> os.makedirs(path, exist_ok=True) 
# which will not raise an error if the `path` already exists and it
# will recursively create the paths, if the preceding path doesn't exist

如果你使用的是python3,可以使用pathlib,如下所示:

Path.mkdir(mode=0o777, parents=False, exist_ok=False)

在给定路径处创建一个新目录。如果提供了mode参数,则它会与进程的umask值结合以确定文件模式和访问标志。如果该路径已经存在,则引发FileExistsError。

如果parents为true,则将根据需要创建此路径的任何缺少的父级;它们将使用默认权限创建,而不考虑mode(模仿POSIX mkdir -p命令)。

如果parents为false(默认值),则缺少的父级会引发FileNotFoundError。 > 如果exist_ok为false(默认值),则如果目标目录已经存在,则引发FileExistsError。

如果exist_ok为true,则将忽略FileExistsError异常(与POSIX mkdir -p命令相同的行为),但前提是最后一个路径组件不是现有的非目录文件。

版本3.5中的更改:添加了exist_ok参数。

>>> import pathlib
>>> path = pathlib.Path(somepath)
>>> path.mkdir(parents=True, exist_ok=True)

你应该添加如何导入模块的说明。 - user8016906
@SuperUser 应该使用 mkdir 而不是 makedir :) - han solo

14
import os
import os.path

folder = "abc"
os.chdir(".")
print("current dir is: %s" % (os.getcwd()))

if os.path.isdir(folder):
    print("Exists")
else:
    print("Doesn't exists")
    os.mkdir(folder)

I hope this helps


3

在父目录下的csv文件夹内创建csv文件,使用完整路径(例如,使用Path Copy Copy获取)从xlsx文件中创建csv文件。


如果exist_ok为true,则会忽略FileExistsError异常,如果目录已经被创建。

from pathlib import Path

wrkfl = 'C:/xlsx/my.xlsx'  # path get from Path Copy Copy context menu
xls_file = Path(wrkfl)
(xls_file.parent / 'csv').mkdir(parents=True, exist_ok=True) 

2
  • 搜索文件夹是否存在,返回truefalse
    os.path.exists('<folder-path>')
  • 创建新文件夹:os.mkdir('<folder-path>')

注意:需要导入模块import os

希望你可以根据需要使用以上两个函数编写逻辑。


1
这段代码正是你想要的。首先获取绝对路径,然后将所需的文件夹加入路径中,最后如果它不存在就创建它。
import os

# Gets current working directory
path = os.getcwd()

# Joins the folder that we wanted to create
folder_name = 'output'
path = os.path.join(path, folder_name) 

# Creates the folder, and checks if it is created or not.
os.makedirs(path, exist_ok=True)

1

通过以上答案的帮助,我得出了这个解决方案。

if not os.path.exists(os.getcwd() + '/' + folderName):
    os.makedirs(os.getcwd() + '/' + folderName, exist_ok=True) 

1
import os


def folder_creat(name, directory):
    os.chdir(directory)
    fileli = os.listdir()
    if name in fileli:
        print(f'Folder "{name}" exist!')
    else:
        os.mkdir(name)
        print(f'Folder "{name}" succesfully created!')
        return


folder_creat('Output Folder', r'D:\LaptopData\ISIS project\test\d0_63_b4_01_18_ba\00_17_41_41_00_0e')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接