我正在尝试将目录中的所有文件放入其自己的个人文件夹中。当试图声明变量'文件夹'我枚举文件列表并尝试将枚举列表编号附加到文件夹名称的末尾,因此文件夹看起来像...... 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 ]
答案 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