2015-01-23 5 views
0

Ниже приведен код, который я использую для поиска по файлам для определенной строки. Когда я открываю файл результатов, который он производит, мои результаты есть.Почему мой код создает повторяющиеся данные?

Но - они дублируются довольно много раз, и для жизни меня я не могу понять, почему.

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 + ("\"")) 
+0

Возможно, лучше использовать регулярное выражение. –

+4

'для строки в файле:'? 'file' по-прежнему является именем файла здесь, вы никогда не открывали этот файл. –

+0

Извините, просто отредактировал его. Теперь его мой фактический код. – silentkow

ответ

1

У вас есть for line in дважды.

В первом случае for line in file ссылается на file, строковое имя файла. Когда python встречает цикл for над строкой, python разбивает строку на отдельные символы и выполняет цикл один раз для каждого символа.

Поскольку вы никогда не используете эти символы, это, вероятно, неверно и приведет к разным количествам дубликатов.

Например, файл «data123» будет генерировать тот же результат 7 раз, потому что в «data123» имеется 7 символов.

Смежные вопросы