我想知道为什么我的搜索电话簿功能无法正常工作

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我想知道为什么我的搜索电话簿功能无法正常工作相关的知识,希望对你有一定的参考价值。

我目前有一个有4种选择的有效电话簿。唯一的事情是,搜索选项不会打印所有匹配项。如果输入名称,并且电话簿中有匹配项,它将把该行打印到文本文件中(phone.txt02,该文件为空白)。然后,在所有匹配项都已打印到文本文件之后,我的程序将读取新的文本文件并以我的首选格式返回它们。

对于新的文本文件,readFile函数目前无法正常工作。在包含相同信息的phone.txt(原始文本文件)上,它可以正常工作。名称和数字之间用逗号分隔。因为这有效,所以我无法弄清楚为什么当值也是name,number \ n

时,readFile函数对phone02.txt无效的原因
def readFile1(filename):
    phonebook = []
    file = open(filename, "r")

    for aline in file:
        person = aline.split(",")

        if person[1][-1] == '\n' :
            pn = person.pop(1)
            person.append(pn[:-1])
            phonebook.append(person)
        elif person[1][-1] != '\n' :
            phonebook.append(person)


    file.close()

    return phonebook


def printEntries1(phonebook):
    readFile1("phone02.txt")
    print("Name                   Phone Number")
    print("-------------------  --------------")
    for i in range (len(phonebook)):
        person = phonebook[i]
        print(i,"{:<20s} {:>14s}".format(person[0],person[1]))
    print("-------------------  --------------")

def searchEntry():
    search = input("Type a name to search for")

    with open("phone.txt", "r") as file:
        lines = file.readlines()

        for line in lines:

            if search in line:
                outfile = open("phone02.txt", "a")
                outfile.write(line)
        phonebook = readFile1("phone02.txt")
        print(readFile1("phone02.txt"))
        printEntries1(phonebook)
        outfile = open("phone02.txt", "r+")
        outfile.truncate()

print(searchEntry())

我不确定如何使printEntries从phone02.txt打印所有匹配项(名称和号码)>

这里是phone.txt文件的示例

Polly,549-5393
Bud Wieser,(213) 477-3928
Jack,277-4829
Mike Dunleavy,335-3453
Robert Darn,219-473-4373
Earl Lee,703-304-8393
Tim Bean,(612) 493-2629
Bud,(701) 487-8522 

如果我输入“ Bud”,它将把包含bud的2行打印到phone02.txt,但不能正确打印。

似乎(在此示例中)当将包含Bud的2行放入phone02.txt中时,只有第一行正在打印

Name.                Number
-------------------  ------------------
0 Bud Wieser.       (218) 477-3928

我知道这是很多信息,很可能是一个简单的解决方法,但是我认为这应该有助于解决该问题。

感谢您的帮助。

我目前有一个有4种选择的有效电话簿。唯一的事情是,搜索选项不会打印所有匹配项。如果我键入一个名称并且电话簿中有一个匹配项,它将打印出...

答案

您从未关闭过写入器以phone02.txt。仅在关闭文件编写器或直接告诉python将更改保存到文件后,所有新行才会保存在文件中。请尝试

if search in line:
    outfile = open("phone02.txt", "a")
    outfile.write(line)
    outfile.close()

以上是关于我想知道为什么我的搜索电话簿功能无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的输入功能无法正确输入? [关闭]

UIAlertView 无法正常工作

斯威夫特:不知道如何打电话给我的代表

Javascript函数调试 - 为什么这个过滤器功能不能正常工作?

安卓手机无法拨号打电话

AVAudioRecorder 没有声音