繁体   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