[英]Reading a csv file in python and creating database
我正在使用需要接受CSV文件名作為字符串,打開並讀取它,創建數據庫然后返回數據庫的函數。 到目前為止,我進行的嘗試似乎具有正確的邏輯,但是卻給我錯誤“沒有此類文件或目錄'filename.csv'。我正在讀取的文件稱為file0.csv,file1.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')]}
讓我們看一下代碼的前兩行:
def read_file(filename):
thefile = open('filename.csv')
我推測,由於您希望能夠使用此代碼處理多個文件,因此您希望能夠調用read_file代替各種filename來代替filename 。 正確?
行,則在代碼的一個缺陷是, 文件名中的第一行是一個可變的但“filename.csv”是文字。 這意味着無論您在第一行中為文件名添加什么內容,都不會更改文字。 為此,第二行必須是例如
thefile = open ('%s.csv' % filename, 'r')
這會將文件名變量中的內容替換為%s,並執行您似乎想要的操作。
大多數受訪者都在抱怨:您的腳本(即Python代碼)可能位於一個光盤文件夾或目錄中,但您要處理的文件可能位於另一個文件夾或目錄中。 當您在不告訴腳本在哪里尋找文件的情況下運行腳本時,將假定您的意思是在運行腳本的文件夾中。 在游戲的階段,最簡單的方法是將Python腳本及其需要的文件全部放在同一文件夾中,然后在同一文件夾中運行。
也許您想要這樣的東西? 它會打開您的文件(假設找到正確的位置),累積其行並返回文件中的行集。
def read_file(filename):
thefile = open('file0.csv', 'r')
lines = []
for line in thefile:
lines.append(line)
thefile.close()
return lines
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.