编辑2:
解决了,请看下面的答案waaaaaaay。
编辑:
几次敲我的头后,我几乎做到了。 这是我的(没有清理,你可以告诉我正在排除一堆东西)代码:
这就是问题所在:它有时会起作用,而其他时候则不然。例如,它将与某些文件完美配合,然后保留最长的代码而不是最短的代码,而对于其他代码,它将删除5个重复中的2个,留下3个。如果它只是可靠地执行,我可能能够解决它,但我不理解看似随机的行为。有什么想法吗?
您知道,我刚开始使用python,而我正在使用python 3.3
所以这是我的问题:
假设我有一个包含大约5,000个文件的文件夹。其中一些文件名称非常相似,但内容和可能的扩展名不同。在一个可读的名称之后,有一个代码,在它之前总是带有“(”或“[”(没有引号)。名称和代码用空格分隔。例如:
something (TZA).blah
something [TZZ].another
hello (YTYRRFEW).extension
something (YJTR).another_ext
我试图只获取其中一个东西,然后删除其他东西。另一个可能很重要的事实是,通常有多个代码,例如“某事(THTG)(FTGRR)[GTGEES!#!]。yet_another_random_extension”,全部用空格分隔。虽然100%无关紧要,但最好保存代码最少的那个。
我制作了一些(非常非常简短的)代码来获取所有文件的列表:
import glob
files=[]
files=glob.glob("*")
但在此之后我几乎迷失了。任何帮助都会受到赞赏,即使它只是指向我正确的方向!
答案 0 :(得分:0)
我建议创建单独的裸文件名数组,并通过使用除当前已检入循环迭代之外的所有索引的数组来检查任何其他位置是否存在任何元素的条件。 在
if str_fragment in name
condition只会在任何字符串类型名称中找到任何字符串片段。它也很有用。
答案 1 :(得分:0)
我明白了!版本我最终完成了作品(99%)。虽然它需要进行多次传递,但阅读,分析和删除超过2千个文件在我可怜的慢速笔记本上花了大约2秒钟。我的最终版本在这里:
唯一的小错误是,如果列表中的最后一项有重复,它将留在那里(并且不超过2)。这是非常简单的手动纠正所以我没有费心去解决它(不是没有人有时间和所有)。
希望将来某个时候这实际上可以帮助除了我以外的其他人。
我在这里没有得到太多答案,但这是一个非常不寻常的问题,所以无论如何,谢谢。见你。