Python - как записать в текстовый файл без удаления содержимого - PullRequest
0 голосов
/ 26 апреля 2020

Я новичок в программировании и мне было интересно, если кто-нибудь может мне помочь. Ниже я создал программу, которая позволяет мне писать в текстовый файл. У меня есть третий столбец с именем flower_quantity. Мне было интересно, как я могу обновить текстовый файл с кодом ниже, не перезаписывая flower_quantity.

def feature_4(flower_file='flowers.txt'):

    flower_update = input("Enter the name of the flower you wish to change the price:"
                          "Lily, Rose, Tulip, Iris, Daisy, Orchid, Dahlia, Peony")
    flower_new_price = input("Enter the updated price of the flower")

    flower, price = [], []
    with open(flower_file) as amend_price:

        for line in amend_price:
            spt = line.strip().split(",")
            flower_price = int(spt[1])
            flower_name = str(spt[0])

            if flower_name == flower_update :
                price.append(flower_new_price)

            else:
                price.append(flower_price)

            flower.append(flower_name)

    with open(flower_file, "w") as f_:
        for i, v in enumerate(flower):
            f_.write("{},{}\n".format(v, str(price[i])))

    print("The new price of", flower_update, "is", flower_new_price)

Ответы [ 3 ]

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

Открыть файл в режиме добавления.

with open(flower_file,"a+"):

Знак + создает новый файл, если файл еще не существует

. Это добавит файл из последней записанной точки. Чтобы добавить из новой строки, вы должны начать с \ n

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

Есть несколько способов сделать это.

Но следуя тому, как вы уже это делали, вы можете просто включить количество при чтении файла. Код будет выглядеть примерно так:

def feature_4(flower_file='flowers.txt'):

    flower_update = input("Enter the name of the flower you wish to change the price:"
                          "Lily, Rose, Tulip, Iris, Daisy, Orchid, Dahlia, Peony")
    flower_new_price = input("Enter the updated price of the flower")

    flower, price, quantity = [], [], []
    with open(flower_file) as amend_price:

        for line in amend_price:
            spt = line.strip().split(",")
            flower_price = int(spt[1])
            flower_name = str(spt[0])
            quantity.append(str(spt[2]))

            if flower_name == flower_update :
                price.append(flower_new_price)

            else:
                price.append(flower_price)

            flower.append(flower_name)

    with open(flower_file, "w") as f_:
        for i, v in enumerate(flower):
            f_.write("{},{},{}\n".format(v, str(price[i]),quantity[i]))

    print("The new price of", flower_update, "is", flower_new_price)

В качестве альтернативы, если вы хотите обновить и не перезаписать весь файл, вам нужно открыть файл с помощью open('txtfile.txt','a+'). и перейдите к указанной строке, которую вы хотите добавить.

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

with open(path, 'a') откроет ваш файл в режиме добавления, который не удалит содержимое и поместит курсор в конец файла, поэтому все будет добавлено в конец файла.

Вы можете найти много отзывов о все доступные режимы открытия файлов, например https://stackabuse.com/file-handling-in-python/

...