随机写Python数据到CSV文件

问题描述:

我有一个使用一个库来生成随机日期(月/日/年)和基于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

你的圆括号在错误的地方,导致你传递两个参数到.writerow()而不是一个元组。

尝试从函数调用中分离出你的元组创建。这应该使代码更易于阅读。

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

完美,我跟随的例子把我扔掉了。谢谢。 – DJ2

+0

请注意,我改变了我的建议。我认为这个版本比我之前建议的更具可读性。 –