使用python创建递增的文件夹名

Using Python to create incrementing folder names

我正在尝试将目录中的所有文件放入它自己的文件夹中。当试图声明变量"folders"时,我枚举文件列表,并尝试将枚举列表编号附加到文件夹名称的末尾,这样文件夹看起来就像…FoLDRY1FoLDRY2FurdRy3,从目录中的文件枚举中生成尾随数字。

然而,下面的代码将它们全部列为"文件夹0",然后点击一个覆盖错误,我的增量似乎不起作用,任何我做错的方向都将非常感谢。

1
2
3
4
5
6
7
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 ]


现在还不清楚你的最终目标是什么,但是从你在代码中展示的和在问题中写的内容来看,我想我可以尝试一下。

  • 为了启动python,使用了基于零的索引,因此对应于EDOCX1中第一个项目(0)的第一个值将是0

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

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

&所以……

&files=["file1","file2"]

&你会得到…

&folders=["FOLDER_1","FOLDER_1"]

  • 这很可能是"覆盖错误"间接形成的地方。如果你试图创建folders中的每个文件夹,你会得到一个OSError告诉你你正在创建一个刚刚创建的文件夹。

如果要为目录中的每个文件创建一个文件夹,我将尝试将代码修改为以下方向:

1
2
3
4
5
6
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中的所有文件夹,请检查它们是否已经存在