2017-05-08 62 views
0

我当前正试图通过python将book id值存储到CSV文件中。图书ID使用从1000到9999开始的while循环随机生成5位5次。我想要做的就是将所有书籍ID保存到CSV文件中。但是,只有最新的值才会保存到CSV文件中,并且以前的book 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

回答

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。或者(我做了什么)是生成一个book id列表,然后将其返回booklist。这将按照您预期的那样写入5个ID的整行。他们没有覆盖

P.S,它在附加模式

编辑:改成了写本书IDS的5名不同的列表的文件。添加for _ in range(5)来表示文件条目的数量,并通过for books in booklist来重复。

+1

非常感谢你的帮助。 – JoanT

+0

@JoanT不用担心,很高兴我能帮上忙 – TLOwater

相关问题