2017-06-15 11 views
1

2つのタイプのテキストファイルの多くを含むディレクトリがあります。 summary_ "と" log "で始まる一連のファイルがあります。これらのテキストはすべて同じディレクトリにあります。今のところ、私は "ログ"テキストファイルを気にしません、私は "要約"で始まるファイルについてのみ気にします。Pycharmの使用コードを実行しても出力が得られません。終了コード0で処理が完了しました。

各「要約」ファイルには、7行のテキストまたは14行のテキストが含まれています。 各行の最後には、テスト結果に応じてPASSまたはFAILと表示されます。テスト結果が合格するためには、7行または14行すべてが最後に「合格」と言わなければなりません。これらの行のいずれかに「FAIL」が1つしかない場合、テストは失敗しました。私は合格と失敗の数を数えたいと思う。

import os 
import glob 

def pass_or_fail_counter(): 

    pass_count = 0 
    fail_count = 0 

    os.chdir("/home/dario/Documents/Log_Test") 
    print("Working directory is ") + os.getcwd() 
    data = open('*.txt').read() 
    count = data.count('PASS') 

    if count == 7 or 14: 
     pass_count = pass_count + 1 
    else: 
     fail_count = fail_count + 1 
    print(pass_count) 
    print(fail_count) 
    f.close() 

pass_or_fail_counter() 
+0

あなたのインデントを修正してください。それは行動を説明するかもしれない。 –

+0

ところで、すべての私のインデントは、関数を定義した後で4つのスペースです。 – DSAN

+0

最後の行をインデントしないでください。書き方は、関数が定義され、プログラムが終了し、その関数は実行されません。 – Nearoo

答えて

2

私はPycharm内のことは知らないが、以下は、それなしで動作するようです:

import os 
import glob 

def pass_or_fail_counter(logdir): 
    pass_count, fail_count = 0, 0 

    for filename in glob.iglob(os.path.join(logdir, '*.txt')): 
     with open(filename, 'rt') as file: 
      lines = file.read().splitlines() 

     if len(lines) in {7, 14}: # right length? 
      if "PASS" in lines[-1]: # check last line for result 
       pass_count += 1 
      else: 
       fail_count += 1 

    print(pass_count, fail_count) 

pass_or_fail_counter("/home/dario/Documents/Log_Test") 
関連する問題