Reputation: 63
I open the file but is saying the file is not open. I stuck on what to do . I am new to python.
Here is the error:
Traceback (most recent call last):
File "\\users2\121721$\Computer Science\Progamming\task3.py", line 43, in <module>
file.write(barcode + ":" + item + ":" + price + ":" +str(int((StockLevel- float(HowMany)))))
ValueError: I/O operation on closed file.
Here is the code:
#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)
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:
open("data.txt","w")
file.write(barcode + ":" + item + ":" + price + ":" +stock)
file.close()
else:
StockLevel=int(stock)
open("data.txt","w")
file.write(barcode + ":" + item + ":" + price + ":" +str(int((StockLevel-float(HowMany)))))
file.close()
open("data.txt","w")
StockLevel=int(stock)
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))
Upvotes: 0
Views: 58
Reputation: 23494
There is
if barcode!=UsersItem:
open("data.txt","w")
You need to
if barcode!=UsersItem:
file = open("data.txt","w")
Also the same error you have in else
statement.
And you should also consider refactoring your code, because you have a lot of file openings and closings.
Edit: as @roganjosh mentioned file
is a builtin name in Python 2, so you'd better change all occurrences of file
to e.g. f
.
Upvotes: 3