簡體   English   中英

如果Python的文本文件中沒有特定的字符串,如何打印內容?

[英]How to print something if a particular string is not present in a text file in Python?

假設我的文本文件是這樣的:

OK / INFO-1070083-將等待的I / O用於索引和數據文件。

OK / INFO-1006069-數據緩存大小==> [100000] KB,[2380]個數據頁。

OK / INFO-1006070-數據文件緩存大小==> [0] KB,[0]個數據文件頁面。

OK / INFO-1200551-已分配的TRIGMAXMEMSIZE:[4096]字節。

OK / INFO-1007046-數據庫重組[Finstmt]成功。

OK / INFO-1007067-總重組所用時間:[8.36]秒。

OK / INFO-1013273-數據庫NA_PLN.Finstmt已更改。

現在,我必須從該文本文件中搜索“經過時間”。 如果顯示已過去,則打印一些內容,如果不存在,則打印其他報價。 我試過的是:

 for line in inputFile: if 'Elapsed' in line: print 'Present' if 'Elapsed' not in line: print 'Not present' 

但是,除了存在所需字符串的那一行外,幾乎所有行都不存在。

有什么方法可以檢查是否存在並且只打印一次?

如果要對整個文件執行檢查,而不是逐行檢查,則可以執行以下操作:

lines_in_file = open(inputFile).readlines()
test = 'Present' if any('Elapsed' in line for line in lines_in_file) else 'Not present'
print(test)

你可以閱讀更多有關any 位置 還要注意, any惰性的 ,這意味着它不必遍歷整個lines_in_file容器。 一旦其謂詞(在本例中為'Elapsed' in line )評估為True ,它將退出。

當您逐行循環瀏覽文件時,將對每一行執行以下語句。 您想要的是一些基本上可以說的代碼

if "Elapsed" in file: 
    print("Present") 
else:
    print("Not present")

由於在python中,read()函數以文本字符串,換行符及所有字符的形式讀取文件,因此您可以按以下方式實現此代碼:

file = open("filepath.txt") #this is your file's path
text = file.read()
if "Elapsed" in text: 
    print("Present") 
else:
    print("Not present")

這省去了遍歷文件的麻煩。

您知道循環可以包含else子句嗎?

for line in inputFile:
    if 'Elapsed' in line:
        print 'Present'
        break
else:
    print 'Not present'  

這將讓您知道“已逝”是否在文件中至少出現了一次,這是我理解的目標
僅當允許循環完成時,即文件中沒有“ Elapsed”時,才會調用else子句

這應該工作:

present = False
    for line in inputFile:
        if 'Elapsed' in line:
            present = True 
            break
if present:
    print 'Present'
else:
    print 'Not present'

除非文件很長,否則您可以將整個文件內容讀入字符串並進行測試。

>>> from pathlib import Path
>>> 'Elapsed' in Path('filename.txt').read_text()
True

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM