Python 根据作为名称一部分的某些值动态创建目录和文件

Python 根据作为名称一部分的某些值动态创建目录和文件,python,operating-system,Python,Operating System,我试图编写一个Python脚本,创建一个目录并将一些图像保存到该目录中。请检查下面的代码 person = 0 # Increase this by one every iteration if os.path.isdir('./training__data/s{str(person)}') is False: # if, for ex. s0 does not exist os.mkdir('./training__data/s' + str(person)) # create s0,

我试图编写一个Python脚本,创建一个目录并将一些图像保存到该目录中。请检查下面的代码

person = 0 # Increase this by one every iteration
if os.path.isdir('./training__data/s{str(person)}') is False: # if, for ex. s0 does not exist
    os.mkdir('./training__data/s' + str(person)) # create s0, for ex.

    for (x,y,w,h) in faces:
        samples += 1
        person += 1
        cv2.imwrite("training__data/s{str(person)}" + str(samples) + ".png", \
            gray[y:y+h, x:x+w])
我想要实现的是创建一个如下所述的文件树

-- training__data/
    -- s0
       -- 0.png
       -- 1.png
       -- n.png   # goes until the nth picture
    -- s1
       -- 0.png
       -- 1.png
       -- n.png
    -- .          # goes until the nth directory
所以我的问题是,我如何将目录命名为s0、s1、s2等

我尝试添加这个-->
s{str(person)}
,但没有解决问题

提前感谢您的帮助,
注意。

如果您使用的是Python3,则需要使用format()函数

for i in range(5):
    print("somefile_{suffix}.txt".format(suffix=i))
    print("another_{0}_example{1}.lol".format(i*i, i/2))

为了生成文件名和目录名的字符串,可以使用函数。例如:

>>> "Hello {} {}".format("World", 2018)
'Hello World 2018'
此外,最好在您的案例中使用,因为它以递归方式创建目录,而不检查目录的路径是否存在。(但要小心给出正确的路径)(注意:如果目标目录已经存在,则会引发
OSError

现在您需要为您的案例使用嵌套的
for
循环。外部循环用于生成目录,内部循环用于生成文件。以下是示例代码:

base_path = '/path/to/dir'

for i in range(10):
    dir_path = '{}/s{}'.format(base_path, i)
    os.makedirs(dir_path)
    for j in range(10):
        file_path = '{}/s{}.png'.format(dir_path, j)
        # your logic with file
用您的逻辑修改上述示例代码