Я пытаюсь написать программу на Python для оценки, где мне нужно обновить файл запаса для магазина.Как заменить строку в Python
Мой код до сих пор:
#open a file in read mode
file = open("data.txt","r")
#read each line of data to a vairble
FileData = file.readlines()
#close the file
file.close()
total = 0 #create the vairble total
AnotherItem = "y" # create
while AnotherItem == "y" or AnotherItem == "Y" or AnotherItem == "yes" or AnotherItem == "Yes" or AnotherItem == "YES":
print("please enter the barcode")
UsersItem=input()
for line in FileData:
#split the line in to first and second section
barcode = line.split(":")[0]
item = line.split(":")[1]
price = line.split(":")[2]
stock = line.split(":")[3]
if barcode==UsersItem:
file = open("data.txt","r")
#read each line of data to a vairble
FileData = file.readlines()
#close the file
file.close()
print(item +" £" + str(float(price)/100) + " Stock: " + str(stock))
print("how many do you want to buy")
HowMany= input()
total+=float(price) * float(HowMany)
file = open("data.txt","a")
StockLevel=float(stock)
file.write(item + ":" + price + ":" +str(float((StockLevel-float(HowMany)))))
file.close()
print("Do you want to buy another item? [Yes/No]")
AnotherItem = input()
if AnotherItem == "n" or "N" or "no" or "No" or "NO":
print("total price: £"+ str(total/100))
Когда я пытаюсь обновить фондовый файл, он записывает в конец файла данных, а не на линии, я хочу его.
Это не отвечает на ваш вопрос, но 'если AnotherItem ==«п»или«N»или" нет "или" Нет "или" НЕТ ":' также будет проблематичным (и заставить вас пойти «нет, нет, нет, нет, нет!»), поскольку он всегда будет работать, потому что даже если «AnotherItem ==» n " 'приведет к' False', '... или" N "' даст правдивое значение, например непустая строка. Вы хотите 'if AnotherItem в {" n "," N "," no "," No "," NO "}:', например. –
Это потому, что вы открыли файл для добавления. Если это текстовый файл, вы можете только перезаписывать символы одинаковой длины, у него нет «записей» как таковых. Вам нужно будет написать строки в новый файл, замените нужную строку/строку, а затем переименуйте файл. – cdarke
@cdarke Как бы переименовать файл? – Lightningz1