2017-05-08 13 views
0

現在、書籍IDの値をPythonでCSVファイルに保存しようとしています。ブックIDは1000から9999までのwhileループを使用して5桁4桁のランダムに生成されます。私がしたいのは、すべてのブック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

答えて

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プログラムは、単にランダムなintに一度book_idを設定しました。 booklist.append()から必要な振る舞いを得るためには、generatebookidを何度も呼び出すループが必要です。代わりに(そして私がやったことは)書籍のIDのリストを生成してから、それをブックリストに返します。これは、あなたが期待するように、5つのIDの行全体として記述します。彼らは上書きされていない

P.Sは、それは追加モードで

編集です:ファイルにブックIDの5種類のリストを書くために、それを変更しました。ファイルエントリの数を示すためにfor _ in range(5)が追加され、for books in booklistでこれらを繰り返しました。

+1

ご協力いただきありがとうございます。 – JoanT

+0

@JoanT心配しないで、うれしい – TLOwater

関連する問題