0

このコードで何が問題なのかを見つけることができません。新しいファイル、つまり FinalResult.txt を作成していません。

import os

log = open('C:\\Sanity_Automation\\Work_Project\\Output\\Result.doc','r')
log_read=log.readlines()
x="FAIL"
if x in log_read:
    with open('C:\\Sanity_Automation\\Work_Project\\Output\\FinalResult.txt', 'w') as fout:
        fout.write("\n")
        fout.write(x)

もう一つ。その単語が見つかると、見つかった場所に完全なテキスト行を書き込む必要があります (単に "FAIL" ではなく)。

4

5 に答える 5

3

log_readはリストです ( の結果として.readlines)。

をテストx in log_readする場合、リスト内の項目が と等しいかどうかを尋ねていますFAIL。つまり、任意の行全体.

以下のことですか?

for line in log_read:
   if x in line:
      # found it
于 2013-05-09T10:14:14.983 に答える
0

また、「.doc」ファイルを読んでいますが、これは Microsoft Word ファイルだと思います。

これをフラットテキストファイルに変換することを検討する必要があります

于 2013-05-09T10:16:16.387 に答える
0

「log_read」に「FAIL」がない可能性があるため、FinalResult.txt は作成されていません。ところで、log_read はリストです。リストの各行を検索するのではなく、行全体を検索するのではなく、(ほとんどの場合) 失敗します。

ファイルに行全体を書き込むためにこれを行います。大きな変更はありません。

  import os

        log = open('C:\\Sanity_Automation\\Work_Project\\Output\\Result.doc','r')
        log_read=log.readlines()
        x="FAIL"
        for line in log_read:
            if x in line:
                with open('C:\\Sanity_Automation\\Work_Project\\Output\\FinalResult.txt', 'w') as fout:
                    fout.write("\n")
                    fout.write(line)
于 2013-05-09T10:17:59.887 に答える
0

log_readファイル内の各行のリストです。あなたがやりたかったのは、単語が1行ではなく、ファイル全体に単語が存在するかどうかを確認することだったと思います。

for line in log_read:
    if x in line:
        with open('C:\\Sanity_Automation\\Work_Project\\Output\\FinalResult.txt', 'w') as fout:
            fout.write('\n')
            fout.write(line) # Writes the line to the file as well
于 2013-05-09T10:14:42.700 に答える
0

X= 'Fail' を定義しました。x と書くと Fail だけが書かれ​​ます。

やったほうがいい

for line in log_read:
    if x in line : fout.write('%s\n'%line)

さらに、出力ハンドルを 1 回だけ (ループの前に) 開きます。または、最初にすべての書き込み可能な行を取得してから、1 回書き込みます (効率のため)。

result = []
for line in log_read:
    if x in line: result.append(line)
if result: fout.write('\n'.join(result))
于 2013-05-09T10:18:36.837 に答える