2010年06月15日 星期二 14:15
文件上传的功能我已经完成了.
我是不存文件直接把 文件里的数据 存到数据库中.
但是我想知道 这个文件 有多条,成功导入了 多好条,应该怎么样控制.
我是学习了1个星期python的.请说清楚一下 先谢谢大锅们.
2010年06月15日 星期二 16:19
没看懂。
2010年06月15日 星期二 16:46
上传文件不存. 我只是获得里面的数据,存到数据库.已经实现了.
然后就是想获得 csv文件里的数据 一共多少条.还想再一开始 判断他的长度,如果传入的是一个空的csv文件就直接让他except走就可以了. 不会写.也知道怎么写 就能获得文件夹得长度.再百度和Google白天,试了很久也不知道 正确的答案.
2010年06月15日 星期二 16:47
def reader(request):
print "kaisi"
file_obj = request.FILES.get('file',None)
print file_obj
try:
print "try"
if file_obj:
import csv
import StringIO
buf = StringIO.StringIO(file_obj.read())
print buf
try:
reader = csv.reader(buf)
except:
return render_to_response('CZKStock_upload.html',{'messageupload':'上传失败,请返回检查文件后继续上传!111'})
for row in reader:
print "for"
print "aa"
print row[0]
print "bb"
jumpID=request.POST.get('KID',None)
jump=CZK.objects.get(KID=jumpID)
jump.KID=row[0]
jump.KPAS=row[1]
jump.save()
return HttpResponseRedirect('/paymanage/CZKStock')
except:
print "ffff"
return render_to_response('CZKStock_upload.html',{'messageupload':'上传失败,请返回检查文件后继续上传!2222'})
2010年06月15日 星期二 16:52
buf.len 就是文件长度。行数的话,可以len(buf.readlines())。不过我想可能搜索回车换行符可能更简单一点。不过要考虑文件最后是否有换行符的情况。
2010年06月15日 星期二 17:00
哎呀,菩萨啊,,,,我这就去试试...
2010年06月15日 星期二 17:22
111行可以得到5条数据,也正确的插入了相应表中呢,但是在后台打印test是,显示0行.
不理解..我就是想把test返回到页面.得到相应导入的行数.比如:共导入 5条记录
2010年06月15日 星期二 19:17
不知道你的test是怎么传到模板中去的?
2010年06月16日 星期三 07:55
不用打开文件吧啊..
2010年06月16日 星期三 08:37
打开什么文件?test你不是打印都是对的吗?那就是传递变量时出错了。而且你使用redirect()这会引发一个新的请求,这时通常的变量传递根本就不对了。
2010年06月16日 星期三 08:51
. 一个文件5条记录,上传. ,上传完成.数据库有存上了5条记录.用print时候打印112行的时候 就变成0.
我就想让页面显示一下 一共存了多少条数据.
2010年06月16日 星期三 08:53
我知道了。因为buf是类file对象,一旦你全部read完,它的文件指针就指向了末尾,因此再读就没东西了。你要先把文件指针复位,比如:buf.seek(0)
2010年06月16日 星期三 08:57
好的.谢谢administrator
2010年06月16日 星期三 09:01
成功了.......原来是这样
Zeuux © 2024
京ICP备05028076号