使用Python创建递增文件夹名称

时间:2014-06-16 17:15:57

标签: python

我正在尝试将目录中的所有文件放入其自己的个人文件夹中。当试图声明变量'文件夹'我枚举文件列表并尝试将枚举列表编号附加到文件夹名称的末尾,因此文件夹看起来像......     FOLDER_1,     FOLDER_2,     FOLDER_3, 从枚举目录中的文件生成尾随数字的位置。

但是,我的下面的代码将它们全部列为' FOLDER_0'然后遇到覆盖错误,我的增量似乎没有工作,任何方向我正在做的事情都会非常感激。

PATH = "C:/Temp/"

def main(): 
    files = [ join(PATH, f) for f in listdir(PATH) if isfile(join(PATH, f)) ]

    for i, f in enumerate (files):
        folders = [ PATH+"FOLDER_"+str(i)+"/" for f in files ]

1 个答案:

答案 0 :(得分:1)

目前还不是很清楚你的最终目标是什么,但是从你在代码中显示的内容以及在你的问题中写的内容来看,我认为我可以抨击它。

  • 要启动python使用基于零的索引,因此与enumerate中第一项对应的第一个值将为0

  • 接下来,您的for循环相当于执行以下操作:

folders = [PATH + "FOLDER_" + str(len(files))] * len(files)

所以......

files=["file1", "file2"]

你会得到......

folders=["FOLDER_1", "FOLDER_1"]

  • 这可能是“覆盖错误”间接形成的地方。如果您尝试在folders中创建每个文件夹,则会得到OSError,告诉您正在创建刚刚创建的文件夹。

如果你想为目录中的每个文件创建一个文件夹,我会尝试将你的代码修改为这个方向:

PATH = "C:/Temp/"

def main():
    files = [join(PATH, f) for f in listdir(PATH) if isfile(join(PATH, f))]
    folders = [join(PATH, "FOLDER_{}".format(i + 1)) for i, _ in enumerate(files)]
    ...

然后,如果您要在folders中创建所有文件夹,请检查它们是否已exist