2017-12-06 10 views
3

私はjsonファイルを持っています。何らかの処理をしています。私は操作を一時停止しなければならなかったので、私が残したところで処理を再開したいと思います。 Whileループ条件が満たされていなくてもIf条件が実行されるという問題があります。私の理解から、Whileループが条件を満たすまでコードに到達できないはずです。どこが間違っていますか?文字列が一致した後にファイルを処理する

row_counter = 0 
start_now = 0 
Finished = 0 
with open('jsonfile') as f: 
    for row in f: 
     row_counter += 1 
     if row_counter > start_now: 
      try: 
       row = json.loads(row) 
       comment_id = row['id'] 

       while Finished == 0: 
        if (comment_id != 'The_String_I_Wanna_Match'): 
         Finished = True 
         break 

       if (condition): 
        print('code i want to execute') 
      except Exception as e: 
       print(e) 
     if (row_counter % 100000 == 0): 
      print('no. of rows gone by {}'.format(row_counter)) 
+0

あなたのコードに到達できないと思われるかどうかはわかりません。私はまた、あなたが無限ループに閉じ込められていないかどうかも分かりません。その 'while Finished == 0 ...'は、最初のjson行にあなたがマッチさせようとしている文字列が含まれていない限り、決して終了してはいけません。いずれにせよ、最初の行があなたの文字列を持っていると仮定すると、あなたのwhileループが壊れているので、あなたの条件がすぐに呼び出されます。 – MCBama

+0

また、ベストプラクティスのリマインダーとして:大文字の変数名を使用しないでください。条件を実行する場合、ブール値を使用することができます。 – MCBama

+0

あなたが正しいと思うサンプルコードを手伝ってくれますか?それは本当に私が一日中このことに執着しているのを助けてくれるでしょう。 @MCBama – Sahil

答えて

1

これは動作するはずです。

while finished == False: 
    if (comment_id == 'commentid'): 
     finished = True 

if (finished == True): 
    pass 
+0

「Flase」は本当ですか?私がそれが一番うまくいくと思ったら、ソースコードから – tripleee

+0

を得ました。あなたは何をしますか? –

+1

正しく入力してください。 – tripleee

1

あなたは、ほとんどの擬似コードを掲示するのでだから私はあなたがここで何をしようとして正確にはわからないが、あなたは間違いなく、whileループを使用する必要はありません。 whileループでは、最初の行が探している文字列と一致している場合(マルチスレッドを実行していないが、そうでないように見える場合を除き)、プログラムがロックされます。私はまたあなたが間違った条件演算子を使用していると思うが、私が言ったように、ここで何をしようとしているのか100%は確信していない。

これは、私はあなたが必要になるだろうと思うものです:

import json 

row_counter = 0 
start_now = 0 

with open('file.json') as f: 
    for row in f: 
    row_counter += 1 
    if row_counter > start_now: 
     try: 
     # check to ensure we're not messing with a blank row 
     if not row: continue 

     # load the row. This line might throw an exception if the 
     # line isn't perfect json 
     row = json.loads(row) 
     print(row) 
     comment_id = row['id'] 

     if(comment_id == 'The_String_I_Wanna_Match'): 
      print('Execute code here') 

     except Exception as e: 
     import traceback 
     print(traceback.print_exc()) 
    if (row_counter % 100000 == 0): 
     print('no. of rows gone by {}'.format(row_counter)) 
関連する問題