2017-10-28 78 views
1

我有一个项目,我想输入数据到CSV。如何将数据输入到csv?

我想如果数据是小于500,如果该值是大于500

import csv 
def rawInputTest(): 
    x = raw_input(">>> Input: ") 
    print x 
    return x 

def writeToFile(xx): 
    with open('WorkOrderLog.csv', 'a') as f: 
     w=csv.writer(f) 
     a=0 
     b=0 
     if xx>500: 
      b=xx 
     elif xx<500: 
      a=xx 
     g=[a,b] 
     w.writerow(g) 
while (True): 
    rawInputTest() 
    writeToFile(rawInputTest()) 

结果予另一基准可以被保存在第二列中的数据被保存在第一列希望是这样的:

输入:600

输入:300

结果应该是[300,600]

如果您再次输入密码,则应将数据保存到第二行。

+0

你在正确的轨道上。因为您一次只能获取一个输入值,所以最简单的方法是在将它们写入文件之前先收集两个值。但是还有其他考虑因素需要考虑。例如,如果用户输入两个大于500的值,会发生什么? – DaveL17

回答

0

的错误是,你比较字符串raw_input回报与整数。在Python 3中会引发一个TypeError,而Python 2只是开心地继续处理不正确的输入。

在将它传递给writeToFile函数之前,可以将输入转换为try:...except ValueError:块中的int。

由于您需要两个输入,您必须调用raw_input两次,然后将值传递给写入函数。我会写类似于这个解决方案的程序:

import csv 


def writeToFile(writer, x, y): 
    a = 0 
    b = 0 
    if x > 500: 
     b = x 
     a = y 
    elif x < 500: 
     a = x 
     b = y 
    g = [a, b] 
    writer.writerow(g) 


with open('temp.csv', 'ab') as f: 
    writer = csv.writer(f) 
    while True: 
     x = raw_input('>>> Input: ') 
     y = raw_input('>>> Input: ') 
     try: 
      x = int(x) 
      y = int(y) 
     except ValueError: 
      print 'Invalid input: {}, {}'.format(x, y) 
     else: # No error. 
      writeToFile(writer, x, y)