python словари, чтение строк файла, добавление в dict () - PullRequest
0 голосов
/ 29 апреля 2020

это необходимо для чтения из текстового файла .txt, чтения файла add в словарь, чтобы пользователь мог впоследствии искать, добавлять / удалять ключи и значения. он запрашивает имя файла, но после передачи файла происходит сбой со следом обратной связи [x [0] = y [1] вне индекса.

загрузить файл

def fileload(filename):
    with open(filename,"r") as file:
        contact={}
        for line in file:
            x = line.replace(",","")
            y=x.split(':')
            contact[x[0]] = y[1]
            print('this is x value',x)

    return contact

спросить у пользователя имя файла, спросить пользователя, кого искать, спросить пользователя, что добавить / удалить / изменить (обновить)

  def main():
    print('To search through names and emails first select the file')
    filename=input('Whats the name of the .txt file?(Please add .txt) :  ')
    search=fileload(filename)

    try:
        search=fileload(filename)
    except:
        print("Sory file not found try again!")

    contact=fileload(filename)
    print('\n----Would you like to search up an email by name?----')
    name_search=input('Whats the person called?: ')

попытаться найти имя, попытаться найти ввод пользователя, затем изменить ввод пользователя в соответствии с запросом пользователя

   for key,value in contact:
        if name_search == value:
            print(f'{name_search} is here!')

        else:
            print(f"{name_search} is not here!")
    print('Would you like to add/remove a name or email?')
    modify=input.lower("i would like to (remove or add)")
    try:
        if  modify  != remove or add:
            print("Sorry you can only choose remove or add!")
    except:
        if modify == remove:
            modify== remove
        if modify == add:
            modify=add

    modify_detail=input.lower(f"would you like to {modify} an email or name?: ")

    try:
        if modify_detail == name:
            modify_detail== name
        if modify_detail == email:
            modify_detail == email

    except:
        if modify  != email or name:
            print(f"please choose a name or email to {modify} ")
            modify_detail=input.lower(f"please pick if you want to {modify} name or email!: ")

    if modify == remove:
        if modify_detail== name:
            print("Pick a name that you want to remove")
            name_remove=input('what name do you want to remove?')
            del contact.get[name_remove]
        if modify_detail == email:
            print("Pick an email to remove or c")
            email_remove=input("what email will you be removing?")
            del contact.get[email_remove]
        print(contact)

    if modify == add:
        if modify_detail == name:
            print("Whats the name that you will be addind?")
            new_name=input("whats the new name?")
            contact["name"]=new_name
        if modify_detail == email:
            print("whats the new email?")
            new_email=input('new email:  ')
            contact["email"]=new_email
            print(contact)



main()

1 Ответ

0 голосов
/ 29 апреля 2020

Единственной причиной может быть отсутствие : хотя бы в одной строке вашего файла. Может быть, вы нажали в конце файла. Большинство файлов в * nix системах заканчиваются пустой строкой.

Например:

a:a:a\n
b:b:b\n
\n

, например:

def fileload(filename):
    with open(filename,"r") as file:
        contact={}
        for line in file.read().split("\n"):
            if ":" in line:
                x = line.replace(",","")
                y=x.split(':')
                contact[x[0]] = y[1]
                print('this is x value',x)

    return contact
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...