Ребят не работает For - помогите

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Orakul, 10 Mar 2015.

  1. Orakul

    Orakul New Member

    Joined:
    24 Jun 2013
    Messages:
    14
    Likes Received:
    0
    Reputations:
    0
    Ребят что то питон меня без фигур,скобок не воспринимает или я его :D , мне надо построчно прогнать файл в цикле а в условии обрабатываю вхождение подстроки maska в строку file.read() и если верно то строка отображается в терминале или в файле. Но у меня почему то только один раз цикл прогоняется и скрипт завершается. Я уже и с пробелами эксперементировал ни работает. Выводятся только строки которые после else в print забиты. Если if и else убрать то весь файл выводится в терминал , только с кучей левой информацией, которую мне нужно убрать. Подскажите что делаю не так, был бы отладчик пошаговый разобрался бы сам. а без оного на форум.
    Code:
    #!/usr/bin/python3
    #coding=utf-8
    
    import sys
    #**************************************
    maska='Адрес, индекс'
    patchport='/home/ХхХ/файл'#путь к файлу с адресами
    coutstr=0#хранит количество строк
    file = open(patchport)#считываем файл с адресами
    for line in file:
    	
         if maska in file.read():
          print(file.read()) 
          coutstr+=1#для отображения количества строк в файле с адресами
          
         else:	
          coutstr+=1	
          print('маска не подходит',coutstr,line)       
    
    print(coutstr,'ты близок к разгадке')
    
     
  2. i~DOS

    i~DOS Member

    Joined:
    26 Mar 2009
    Messages:
    42
    Likes Received:
    40
    Reputations:
    4
    Не нужно пытаться писать на питоне в процедурном стиле.

    Вот рабочий код, открытый файл нужно закрывать(file.close()), либо использовать конструкцию "with:", она это делает автоматически. По стандарту перед каждым блоком должен быть отступ в 4 пробела. Советую почитать pep8 и изучить стандартную библиотеку.
    Code:
    pattern = 'шаблон'
    file = 'file.txt'
    with open(file, 'r') as f:
        print(f.read().count(pattern))
     
    1 person likes this.