2017-05-08 93 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

相關問題