为什么我的代码会产生重​​复数据?

时间:2015-01-23 14:20:05

标签: python

以下是我用来搜索特定字符串的文件的代码。当我打开它生成的结果文件时,我的结果就在那里。

但是 - 它们被复制了很多次,而对于我的生活,我无法弄清楚为什么。

import os
global file_list

filename = raw_input("Enter a portion of the file name(s) you would like to search in: ")
results = raw_input("What file would you like results saved to: ")

file_list=[]
FO = open(results, 'w')

for dirname, subdirlist, files in os.walk("."):
    for filenames in files:
        file = os.path.join(dirname, filenames)
        file_list.append(file)
        if str(file).find(filename) >= 0:
            for line in file:
                FI = open(file, 'r')
                for line in FI:
                    if len(line.split(':')) > 30:
                        line_list=line.split(':')
                        if line_list[29] == '5':
                            FO.write(line)
print("Files save to " + ("\"") + results + ("\""))

1 个答案:

答案 0 :(得分:1)

你有for line in两次。

在第一种情况下,for line in file引用file,即字符串文件名。当python在字符串上遇到for循环时,python会将字符串分解为单个字符,并为每个字符执行一次循环。

由于您从不使用这些字符,因此可能不正确并会导致不同数量的重复。

例如,文件“data123”将生成相同的结果7次,因为“data123”中有7个字符。