我正在将一个简单的 CSV 文件导入到我的 GAE 应用程序中,并且想要选择列表的第一项。下面的代码导入一个 CSV 文件并将每一行保存为一个列表。现在我希望它只显示每个列表项的第一个条目,但如果我使用 data[1] 它表示这超出了范围。我想我错过了一些明显的东西,但似乎无法弄清楚。任何帮助将不胜感激!
class CSVImport(webapp2.RequestHandler):
def post(self):
csv_file = self.request.get('csv_import')
fileReader = csv.reader(csv_file.split("\n"))
dataset = []
dataset.extend(fileReader)
for data in dataset:
self.response.out.write(data)
编辑 1
有关信息,初始代码给出了以下响应:['name', 'description', 'url', 'category', 'deliverycost', 'returning', 'provider', 'prov_id', 'logo', 'last_update ']['Amazon', 'Changed the desc', 'http://www.url.com', 'Meta', '5 Euro', 'Gratis', 'Affilinet', 'Test', '/images/ logos/amazon.jpg', '2012-12-26 13:11:22.519000']['B 店', '', 'http://www.url.com', '', '', '', '', '', '', '2012-12-26 13:19:01.545000']['Otto', 'Test something', 'http://amazon.de', 'Meta', '', ' sdgs','sdgsdg','sdgds','dsgdsg','2012-12-26 13:09:10.716000'][]
根据 RocketDonkey 的回答,我将代码改写为以下内容:
class CSVImport(webapp2.RequestHandler):
def post(self):
csv_file = self.request.get('csv_import')
with open(csv_file, 'rb') as f:
fileReader = csv.reader(f)
for data in fileReader:
print data[0]
然而,这会产生以下错误:IOError: [Errno 13] file not accessible: 'name,description,url,category,deliverycost,returning,provider,prov_id,logo,last_update\r\nAmazon,Changed the desc,http:// www.url.com,Meta,5 Euro,Gratis,Affilinet,Test,/images/logos/amazon.jpg,2012-12-26 13:11:22.519000\r\nB Shop,,http://www.url .com,,,,,,,2012-12-26 13:19:01.545000\r\nOtto,Test something,http://amazon.de,Meta,,sdgs,sdgsdg,sdgds,dsgdsg,2012-12- 26 13:09:10.716000\r\n'
' accessible: ' 之后的内容是 CSV 文件的确切内容,这就是为什么我发现错误 'file notaccessible' 非常显着的原因。CSV 文件通过 HTML 表单进入,如下所示:
<form action="/admin/shop/import" method="post" enctype="multipart/form-data">
<p><strong>Import:</strong>
<input type="file" name="csv_import" id="csv_import" accept=".csv">
<input type="submit" value="Import"></p>
</form>
我知道 RemoteAPI 可能是一个更好的解决方案,但是我在 Windows 7 下设置它时遇到了麻烦,这就是为什么我现在尝试将其构建为一种解决方法。因此,一旦我能够从 CSV 文件的单个列中选择数据,我就会将其与我定义的数据库模型相匹配。