在 google 应用引擎中上传和读取 CSV 文件
Upload and read CSV file in google app engine
我正在从表单上传 CSV 文件,并想在 Python 中检索它的第一行。我正在使用 App Engine 应用程序,并使用 webapp2(不知道它是否相关?)。
我尝试了很多在论坛上找到的答案,但 none 有效。我试过了:
def post(self):
csv_file = self.request.POST.get('csvFile')
fileReader = csv.reader(csv_file.file)
但我得到:AttributeError: 'unicode' object has no attribute 'file'
我也试过:
def post(self):
csvFile = self.request.get('csvFile')
print csvFile
stringReader = csv.reader(StringIO.StringIO(csvFile))
for row in stringReader:
print row
但我得到:
C:\fakepath\my_file.csv
['C:\fakepath\my_file.csv']
对于我的打印语句(无论我是 request.get 还是 request.POST.get)。
我也试过:
def post(self):
content = self.request.POST.multi['csvFile'].file.read()
但我得到:AttributeError: 'str' object has no attribute 'file'
我也试过:
def post(self):
csvFile = self.request.files['csvFile']
file = open(csvFile, 'r')
但我得到:AttributeError: files
我也试过:
def post(self):
csvFile = self.request.POST['csvFile'].value.decode('utf-8')
file = csvFile.splitlines()
data = csv.DictReader(file)
但我得到:AttributeError: 'unicode' object has no attribute 'value'
我不明白这些错误,因为其中许多解决方案似乎对其他人也适用。
我的表单看起来像这样(我使用的是 Polymer):
<form is="iron-form" action="/upload" method="POST" enctype="multipart/form-data"
on-iron-form-submit="_formSubmitted" id="form" name="form">
<div class="box">
<input type="file" name="csvFile" id="file" class="inputfile"
data-multiple-caption="{count} files selected" multiple on-tap="_chooseFile"/>
<label for="file" name="label">
<span>Choose a CSV file...</span></label>
</div>
你有什么建议吗?
谢谢!
终于找到问题所在:来自Polymer,对象'iron-form'不支持enctype="multipart/form-data"
。我删除了 is="iron-form"
并且一切正常。
我正在从表单上传 CSV 文件,并想在 Python 中检索它的第一行。我正在使用 App Engine 应用程序,并使用 webapp2(不知道它是否相关?)。
我尝试了很多在论坛上找到的答案,但 none 有效。我试过了:
def post(self):
csv_file = self.request.POST.get('csvFile')
fileReader = csv.reader(csv_file.file)
但我得到:AttributeError: 'unicode' object has no attribute 'file'
我也试过:
def post(self):
csvFile = self.request.get('csvFile')
print csvFile
stringReader = csv.reader(StringIO.StringIO(csvFile))
for row in stringReader:
print row
但我得到:
C:\fakepath\my_file.csv
['C:\fakepath\my_file.csv']
对于我的打印语句(无论我是 request.get 还是 request.POST.get)。
我也试过:
def post(self):
content = self.request.POST.multi['csvFile'].file.read()
但我得到:AttributeError: 'str' object has no attribute 'file'
我也试过:
def post(self):
csvFile = self.request.files['csvFile']
file = open(csvFile, 'r')
但我得到:AttributeError: files
我也试过:
def post(self):
csvFile = self.request.POST['csvFile'].value.decode('utf-8')
file = csvFile.splitlines()
data = csv.DictReader(file)
但我得到:AttributeError: 'unicode' object has no attribute 'value'
我不明白这些错误,因为其中许多解决方案似乎对其他人也适用。
我的表单看起来像这样(我使用的是 Polymer):
<form is="iron-form" action="/upload" method="POST" enctype="multipart/form-data"
on-iron-form-submit="_formSubmitted" id="form" name="form">
<div class="box">
<input type="file" name="csvFile" id="file" class="inputfile"
data-multiple-caption="{count} files selected" multiple on-tap="_chooseFile"/>
<label for="file" name="label">
<span>Choose a CSV file...</span></label>
</div>
你有什么建议吗? 谢谢!
终于找到问题所在:来自Polymer,对象'iron-form'不支持enctype="multipart/form-data"
。我删除了 is="iron-form"
并且一切正常。