Python论坛  - 讨论区

标题:关于python文件的上传的问题.

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哲思注册吗?现在 注册 !

    Zeuux © 2023

    京ICP备05028076号