[英]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.