2015-10-18 129 views
1

我需要定義一個讀取csv文件的函數,之後我需要執行一些函數,它們從所選文件中獲取信息並進行一些計算,稍後寫入到一個新的文件。 這部分代碼的樣子:從文件中讀取並寫入新文件的函數

if str1 == 'small': 
    with open('small.csv', 'r+') as small: 
     read_small = csv.reader(small) 
     for row in read_small: 
      print row 
elif str1 == 'big': 
    with open('big.csv', 'r+') as big: 
      read_big = csv.reader(big) 
      for row in read_big: 
       print row  
else: 
    print "File not found" 

現在,它打印出的文件,因爲我希望他們看,但是當我嘗試變形點焊上不打印出文件中的函數,只是返回它對我來說,我可以在其他函數中調用它來計算它不起作用! 任何提示? (我用Google搜索爲****找到一個解決方案,我是新手)

+0

而不是打印行,你可能想收集他們在列表中並返回該列表? – dursk

回答

-1

但是當我嘗試是變形點焊上不會打印出文件中的函數,只是返回對我來說

def get_lines(my_str): 
    file_picker = {'small': 'small.csv', 'big':'big.csv'} 
    with open(file_picker[my_str]) as f: 
     my_csv_reader = csv.reader(f) 
     return [ row for row in my_csv_reader ] 
+0

是的,但我希望它在上面打印出來的方式返回。 用戶可以選擇2個文件,然後打開函數,選中的文件並按照我的for-loops所執行的方式返回 –

+0

@ErikAngerfistNyström,我更新瞭解決方案 – Sait

-1

聽起來好像你想要找回所有行的列表。

def get_rows(): 
    rows_to_return = [] 
    with open('file.csv', 'r') as f: 
     reader = csv.reader(f) 
     for row in reader: 
      rows_to_return.append(row) 
    return rows_to_return 
相關問題