我想知道是否有人对python和gae有更好的理解可以帮助我.我正在将一个csv文件从表单上传到gae数据存储区.
class CSVImport(webapp.RequestHandler):
def post(self):
csv_file = self.request.get('csv_import')
fileReader = csv.reader(csv_file)
for row in fileReader:
self.response.out.write(row)
Run Code Online (Sandbox Code Playgroud)
我遇到了其他人在这里提到的问题 - http://groups.google.com/group/google-appengine/browse_thread/thread/bb2d0b1a80ca7ac2/861c8241308b9717
也就是说,csv.reader迭代每个字符而不是行.一位谷歌工程师留下了这样的解释:
调用self.request.get('csv')返回一个String.迭代字符串时,迭代字符而不是行.你可以在这里看到差异:
class ProcessUpload(webapp.RequestHandler):
def post(self):
self.response.out.write(self.request.get('csv'))
file = open(os.path.join(os.path.dirname(__file__), 'sample.csv'))
self.response.out.write(file)
# Iterating over a file
fileReader = csv.reader(file)
for row in fileReader:
self.response.out.write(row)
# Iterating over a string
fileReader = csv.reader(self.request.get('csv'))
for row in fileReader:
self.response.out.write(row)
Run Code Online (Sandbox Code Playgroud)
我真的不遵循解释,并没有成功实施它.任何人都可以提供更明确的解释和建议的修复?
谢谢,八月
我有一个从Django表单加载到内存中的文件.它给了我以下错误:
new-line character seen in unquoted field - do you need to open the file in universal-newline mode?
Run Code Online (Sandbox Code Playgroud)
另一种解决方案使用此.
但是,我已经将文件存储在内存中,因此我需要将其更改为以"rU"
格式打开.
这是我的相关代码 views.py
form = ResultsUploadForm(request.POST, request.FILES)
if form.is_valid():
form.save()
reader = csv.reader(request.FILES['file'])
for row in reader:
#etc...
Run Code Online (Sandbox Code Playgroud)
有谁知道如何解决这个问题?从此声明中抛出错误for row in reader: