2014-02-01 4 views
-1

Я ищу, как остановить некоторое время по условию. остановитесь в работе $ config1. как остановиться в первом! после узла $ config1?python txt file while stop

def filtre(source): 
fs = open(source, 'r') 
while 1: 
    txt = fs.readline() 
    if txt =='': 
     break 

    else: 
     print txt 
     if txt == "$ config1\n": 
      raw_input("==========================>") 

      if txt == "!\n": 
       raw_input("==========================>") 

fs.close() 
return 

TXT файл

! ************************************ 
! * Export File: X:\test.txt 
! *  Created by: PC2 
! * Creation Date: 10/01/2014 18:50 
! *   User: test 
! ************************************* 
! 
! 
$ config1 
MCBR:54:62:2:32:.5:x34:y637:::: 
MCBR:54:62:2:32:.5:x34:y637:::: 
MCBR:54:62:2:32:.5:x34:y637:::: 
MCBR:54:62:2:32:.5:x34:y637:::: 
! 
! 
$ End of file. 
+4

Что именно вы пытаетесь сделать? И ваш вопрос не очень ясен. – thefourtheye

+0

Есть ли причина, по которой вы используете цикл while, а не цикл 'for' в файловом объекте? 'для строки в файле' является обычным способом перебора строк в файле, и это намного проще, чем делать много вызовов' readline'. – Blckknght

+0

Ваш код уже останавливается в обеих строках «$ config1 \ n» и «! \ N». В чем проблема? – wolfrevo

ответ

1

Спасибо, этот код работает, :)

def filtre(source): 
fs = open(source, 'r') 
started = false 
while 1: 
    txt = fs.readline() 
    if txt =='': 
     break 

    else: 
     print txt 
     if txt == "$ config1\n": 
      started = true 
      raw_input("==========================>") 

      if started and txt == "!\n": 
       break 

fs.close() 
return 
0

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

"если еще, если" в Python могут быть написаны как:

if condition1: 
    reaction1 
elif condition2: 
    reaction2 

или

if condition1: 
    reaction1 
else: 
    if condition2: 
     reaction2 

Или, если вы знаете, что condition1 и condition2 не может произойти в то же время, это делает то же самое:

if condition1: 
    reaction1 
if condition2: 
    reaction2 

Уровень отступов важен.

+0

определение функции FILTRE (источник): фс = открыт (источник, 'г') начал = ложь в то время как 1: TXT = fs.readline() если TXT == '': перерыв еще: print txt if txt == "$ config1 \ n": start = true raw_input ("======================================>) если начато и txt == "! \ N": break fs.close() возвращение ' – softghost