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

时间:2018-01-08 22:44:50

标签: 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, 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)}没有解决问题。

感谢您的帮助, 问候。

2 个答案:

答案 0 :(得分:1)

如果您使用的是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))

答案 1 :(得分:1)

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

NumericLiteralExpression

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

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

for

使用您的逻辑修改上面的示例代码。