我对我的代码有些疑问:
def entry_book():
book = ["autor", "ime", "godina", "ISNB", "zanr", "cena", "broj"]
print ("Podaci za knjigu:")
book[0] = input ("Autor: ")
book[1] = input ("Naslov: ")
book[2] = input ("Godina: ")
book[3] = input ("ISNB: ")
book[4] = input ("Zanr: ")
book[5] = input ("Cena: ")
book[6] = input ("Kolicina: ")
record= "{}|{}|{}|{}|{}|{}|{}".format (book[0], book[1], book[2], book[3],
book[4], book[5], book[6])
print (book)
print (record)
f = open('books.txt','w')
f.write (record)
f.close()
f = open("books.txt")
x = f.read()
f.close()
print (x)
record1 = record.split('|')
print (record1)
second_meni()
这是存储书籍信息的代码,我想以后再访问(比如在图书馆)。但是,每次我添加/创建一本新书时,旧的一本就会被删除。谁能帮我重写代码,这样它就可以存储旧数据了。或者请解释一下正确的方法是什么?你知道吗
你必须使用
“w”重新创建文件(因此仅对新文件使用它,或者如果您不介意它将被覆盖,“a”将附加到文件。你知道吗
见python open built-in function: difference between modes a, a+, w, w+, and r+?
还有一些无关的建议:
我冒昧地对你的代码进行了一点pythonizing。你知道吗
1)这是一个列表理解。它通过循环遍历内容来创建列表。在本例中,我们在
header
列表中循环,并使用其项来构造input
语句。提供的输入存储在列表中。你知道吗2)
.join()
方法。它做了你明确做过的事。使用迭代器之间的字符串连接迭代器中的项。你知道吗3)
with
关键字。管理文件,以便您不必这样做。除非有理由不使用它,否则就使用它。这也是代码的真正问题所在。您必须使用'a'
模式。'a'
表示append,'w'
表示write。在这种情况下,write意味着删除所有的内容,然后写下新的东西。还要注意,'a'
模式也可以创建文件,您不需要临时切换到'w'
,因为('r'
没有;'r'
是用于read)。你知道吗干杯!你知道吗
我认为有两种方法可以做到这一点:
第一个
是负责重写文件中现有数据的代码段。 python提供的将一些新数据附加到现有数据的另一个选项是使用append'a'方法打开一个文件进行写入。所以你可以用
它不会用您输入的新数据替换文件。你知道吗
秒
另一种方法是用read方法
f = open('knjige.txt','r')
打开文件,并将现有数据复制到变量(variable=f.read('knjige.txt')
)。如果需要维护数据类型,还可以使用pickle module及其函数dump和load。 现在将新数据连接到“variable”中的值,然后再次以write方法打开文件并将其写回。你知道吗相关问题 更多 >
编程相关推荐