2017-10-28 64 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)