【发布时间】:2014-08-06 14:00:30
【问题描述】:
我正在尝试将目录中的所有文件放入它自己的单独文件夹中。当试图声明变量“文件夹”时,我枚举文件列表并尝试将枚举列表编号附加到文件夹名称的末尾,因此文件夹看起来像...... FOLDER_1, 文件夹_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 ]
【问题讨论】:
-
确切的错误是什么?
-
在你的列表理解之后
files是什么样的? -
你希望在 for 循环之后的
folders中有什么?现在你遍历文件但在任何地方都使用f,即最后一行相当于文件夹= [PATH+“FOLDER_”+str(i)+“/”] * len(files),这可能不是你想要的。此外,您使用了变量f两次(外循环和内循环),这确实可能会导致问题。 -
每次执行
for循环时,都会创建一个新变量folders。您必须在for循环之前初始化一个空变量folders = [],然后使用list.append()方法或+=运算符添加一个新项:folders.append([ PATH+"FOLDER_"+str(i)+"/" for f in files ]) -
但是,我看到了更多的差异。如果不需要,为什么要使用
enumerate?您也可以使用:for i in range(len(files))或为files变量创建一个单行函数:folders = [ PATH+"FOLDER_"+str(i)+"/" for i in range(len(files)) ]
标签: python