我目前正在尝试通过python将图书ID值存储到CSV文件中。使用从1000到9999的while循环,随机生成4个数字的book id 5次。我想要做的是将所有book id保存到CSV文件中。但是,只有最新值会保存到CSV文件中,并且之前的书籍ID值会被覆盖。如果得到任何帮助,我将不胜感激。
这些是我的代码。
import random
import csv
def generatebookid():
global book_id
count =0
while (count<5):
book_id = random.randint(1000,9999)
print (book_id)
count+=1
def savecsv():
booklist = []
booklist.append(book_id)
csvfile ='C:\\Users\\dell\\Desktop\\MPbookid.csv'
with open (csvfile, "a") as output:
fieldnames = ['Book ID']
writer = csv.writer(output, delimiter =',', lineterminator ="\n")
writer.writerows([fieldnames])
writer.writerows([booklist])
generatebookid()
savecsv()
这是我在excel中打开CSV文件时得到的输出。我应该得到5个值,但只保存最新的书ID值。 csv
答案 0 :(得分:1)
import random
import csv
def generatebookid():
book_id = []
count =0
while (count<5):
book_id.append(random.randint(1000,9999))
count+=1
return book_id
def savecsv():
booklist = []
for _ in range(5):
booklist.append(generatebookid())
csvfile =r"path\to\my\directory\sometext.csv"
with open (csvfile, "a") as output:
fieldnames = ['Book ID']
writer = csv.writer(output, delimiter =',', lineterminator ="\n")
writer.writerows([fieldnames])
for books in booklist:
writer.writerows([books])
generatebookid()
savecsv()
所以你的generatebookid程序只是将book_id设置为一次随机int。为了从booklist.append()获得你想要的行为,你需要某种循环来多次调用generatebookid。或者(以及我所做的)生成一个书籍ID列表,然后将其返回到书目列表。这将按照您的预期编写一整行5个ID。
P.S他们没有被覆盖,它处于追加模式
编辑:更改它以将5个不同的图书ID列表写入文件。添加了for _ in range(5)
以表示文件条目的数量,并使用for books in booklist
进行了迭代。