2015-01-09 119 views
0

我無法打開此上傳的csv文件。當我使用一個文件從PC目錄它工作正常,但是當我把它上傳從HTML表單我得到這個錯誤:打開上傳的csv文件

TypeError: coercing to Unicode: need string or buffer, file found 

當試圖從上傳CSV文件中讀取

domain_file = request.POST['csv'].file 
    file = open(domain_file, "r") 
    csv_file = csv.reader(file, delimiter=",", quotechar='"') 

該作品罰款時,正在使用的文件從PC

file = open('/Desktop/csv.csv', "r") 
    csv_file = csv.reader(file, delimiter=",", quotechar='"') 

回答

1

file包含一個文件對象,而不是一個路徑。使用filename屬性來代替:http://flask.pocoo.org/docs/0.10/patterns/fileuploads/

也許是這樣的:

domain_file = request.files['csv'] 
if domain_file and allowed_file(domain_file.filename): 
    file = open(domain_file, 'r') 
    #... 

另見http://werkzeug.pocoo.org/docs/0.9/wrappers/#werkzeug.wrappers.BaseRequest.files

+0

謝謝安德烈問我如何能在金字塔實現你的答案,因爲我最終與名稱錯誤:Allowed_file未定義。 –

+0

請參閱http://flask.pocoo.org/docs/0.10/patterns/fileuploads/#a-gentle-introduction以獲取'allowed_file'的示例實現。 –

0

如果你這樣做,你就可以通過數據通過線CSV行迭代以字典顯示。

import csv 
csv_contents = request.POST['csv'].value.decode('utf-8') 
file = csv_contents.splitlines() 
data = csv.DictReader(file)