2016-11-12 128 views
0

我正在處理一個函數,我需要接受CSV文件名作爲字符串,打開並讀取它,創建數據庫,然後返回數據庫。我迄今爲止的嘗試似乎有正確的邏輯,但它給了我錯誤「沒有這樣的文件或目錄'filename.csv'。我正在閱讀的文件被稱爲file0.csv,file1.csv等。我的代碼如下:有沒有人有任何關於如何解決這個問題的建議?謝謝在Python中讀取csv文件並創建數據庫

編輯:我意識到我在下面列出的是數據庫的一個例子,第一行該文件是標題行,現在我已經在讀標題行,當它不應該是這裏的代碼低於

代碼更新的代碼:

def read_file(filename): 
    thefile = open(filename) 
    data = [] 
    for line in thefile: 
     data.append(line) 
    thefile.close() 

    return data 



    Example database: 

{'Leonardo da Vinci': [('Mona Lisa', 1503,  
76.8, 53.0, 'oil paint', 'France'), ('The 
Last Supper', 1495, 460.0, 880.0, 'tempera',  
'Italy')]} 
+1

你的代碼是非常非常錯誤的...如果文件沒有找到,那意味着你不在你認爲你的目錄中。而你的代碼是非常錯誤的(我已經說過了嗎?) –

+0

究竟是什麼錯誤?我做了一些研究,試圖找出我想做的事情,而不是文件.write(line1),file.write(\ n),thefile.write(line2)等。 – n00bprogrammer22

+0

您無法在讀取模式下打開文件。寫作需要一個參數。然後關閉循環中的文件。我應該繼續嗎? –

回答

0

中號你想要這樣的事嗎?它打開你的文件(只要你找到了正確的位置),累積它的行並返回文件中的行集。

def read_file(filename): 
    thefile = open('file0.csv', 'r') 
    lines = [] 
    for line in thefile: 
     lines.append(line) 
    thefile.close() 

    return lines 
+0

它仍然給錯誤沒有這樣的文件或目錄:'file0.csv'不知道是什麼原因造成這個 – n00bprogrammer22

+1

1)在哪個目錄是「file0.csv」? 2)你的Python程序在哪個目錄下?比較位置1)和2)。它們必須與您的程序一樣才能成功。 – Ukimiku

1

讓我們來看看剛纔你的代碼的前兩行:

def read_file(filename): 
    thefile = open('filename.csv') 

我推測,既然你要能夠處理多個文件與此代碼,你希望能夠致電讀取文件替換各種文件名代替文件名。正確?

行,則在代碼的一個缺陷是,文件名在第一行是一個變量,但「filename.csv」是文字。這意味着不管你在第一行放置了文件名它都不會改變文字。要做到這一點,第二行必須是,例如,

thefile = open ('%s.csv' % filename, 'r') 

這將使什麼在變量來代替%S的,做你似乎什麼希望。

大部分受訪者都在大笑:您的腳本(即Python代碼)可能位於一個光盤文件夾或目錄中,但您要處理的文件可能位於不同的文件夾或目錄中。當你運行一個腳本而不告訴它在哪裏尋找文件時,它會假定你的意思是在它運行的文件夾中。在遊戲階段,最簡單的方法是將Python腳本和它需要的文件放在同一個文件夾中,然後在同一個文件夾中運行。