2017-03-31 83 views
-1

我有一個使用一個庫來生成隨機日期(月/日/年)和基於12小時時鐘隨機時間的一小Python腳本..隨機寫Python數據到CSV文件

def randomPhone(): 
    n ='0000000000' 
    while '0' in n[3:6] or n[3:6]=='000': 
    n = str(random.randint(10**9, 10**10-1)) 
    return n[:3] + '-' + n[3:6] + '-' + n[6:] 
    randomPhone() 

def strTimeProp(start, end, format, prop): 
    stime = time.mktime(time.strptime(start, format)) 
    etime = time.mktime(time.strptime(end, format)) 
    ptime = stime + prop * (etime - stime) 
    return time.strftime(format, time.localtime(ptime)) 

def randomDate(start, end, prop): 
    return strTimeProp(start, end, '%m/%d/%Y %I:%M %p', prop) 

print randomDate("1/1/2016 12:00 AM", "1/1/2017 12:00 AM", random.random()) 

我有代碼來生成其他隨機數據,如姓名和電話號碼。但首先,我想將日期和時間寫入CSV文件,並確保格式正確。所以日期和時間可以正確顯示在格式良好的表格中,但是當我嘗試添加phoneNumber()時,我遇到了問題。該表顯示,當只有日期/時間參數傳遞,我怎麼想的樣子,但增加了到年底的一個電話號碼的另一部分,等等

f = open("CDR.csv", 'wt') 
try: 
    writer = csv.writer(f) 
    writer.writerow(('Date/Time', 'Phone#')) 
    for i in range(1): 
     writer.writerow((randomDate("1/1/2016 12:00 AM", "1/1/2017 12:00 AM", random.random())), randomPhone()) 
finally: 
    f.close() 

print open("CDR.csv", 'rt').read() 

不過我'得到一個typeError,'writerow()只需要一個參數,兩個給出'

我正在關注CSV Writing作爲一個例子。

+0

那是因爲你傳遞2個參數爲'writerow' :) –

+0

嘗試生成一個'random_row'第一,打印,以確保您瞭解您所產生的,那麼'.writerow(random_row) '有信心。 – 9000

+0

或者確保你的所有funcs都返回字符串,然後將它們連接起來,然後將它們送入'writerow()' – patrick

回答

2

你的圓括號在錯誤的地方,導致你傳遞兩個參數到.writerow()而不是一個元組。

嘗試從函數調用中分離出你的元組創建。這應該使代碼更易於閱讀。

row = (
    randomDate("1/1/2016 12:00 AM", "1/1/2017 12:00 AM", random.random()), 
    randomPhone(), 
) 
writer.writerow(row) 
+0

完美,我跟隨的例子把我扔掉了。謝謝。 – DJ2

+0

請注意,我改變了我的建議。我認爲這個版本比我之前建議的更具可讀性。 –