如何使python在满足条件之前一直读取行?

2024-04-25 09:59:54 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我当前的代码:

StockSearch = input("Search For Product (Name Or Code):\n")
with io.open('/home/jake/Projects/Stock','r', encoding='utf8') as f:
    for line in f:
        Read = f.readline()
        while Read!='':
            if StockSearch == Read:      
                print (Read)

我试图让python继续读取文件的每一行,直到没有剩余的行,并将用户的输入与其中一行匹配,否则将打印错误代码。

提前谢谢你。


Tags: or代码nameiohomeforreadinput
3条回答

您只需遍历打开的文件即可逐行读取。如果满足条件,则break退出循环。在循环的末尾添加一个打印错误消息的else语句。只有在读取整个文件且未找到匹配项时,才会执行else块。

search_text = input("Search For Product (Name Or Code):\n")
with io.open('/home/jake/Projects/Stock','r', encoding='utf8') as f:
    for line in f:
        if search_text == line.strip():
            print line
            break
    else:
        print 'Search text not found'

这似乎与我在雷蒙德·赫廷格的'Pythonic' coding video上看到的模式相似。它叫iterating with a sentinel value

格式如下:

with open('filename.txt') as f:
    blocks = []
    read_block = partial(f.read, 32)
    for block in iter(read_block, ''):
        blocks.append(block)

在您的情况下,您可以用stop值替换''

StockSearch = input("Search For Product (Name Or Code):\n")
found = False
with io.open('/home/jake/Projects/Stock','r', encoding='utf8') as f:
    for line in f:
        line = line.rstrip('\n')
        if StockSearch == line:      
            print(line)
            found = True
            break
if not found:
    print("Nothing found")

相关问题 更多 >