V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
wsds
V2EX  ›  Python

Python 脚本处理一些数据,从外部写数据到 excel,外部因素非常多,有可能中途失败了,失败程序报错停止时,如何调用保存方法,把报错之前的数据仍写到 excel 中?

  •  
  •   wsds · 2018-05-10 17:29:32 +08:00 · 2376 次点击
    这是一个创建于 2149 天前的主题,其中的信息可能已经有所发展或是发生改变。
    1.python 脚本处理一些数据,从外部写数据到 excel,外部因素非常多

    2.很大可能中途直接失败了,失败时程序报错停止时了,也调用不到 save 方法()

    3.如何调用保存方法,把报错之前的数据仍写到 excel 中?

    4.用的第三方库是 xlwt,为什么没有写一行,保存一次,因为我发现这货,保存后,再写,之前写的就清空掉了,蛋疼
    13 条回复    2018-05-10 21:37:00 +08:00
    264768502
        1
    264768502  
       2018-05-10 17:37:02 +08:00 via Android
    try/finally(save)?
    zhangsen1992
        2
    zhangsen1992  
       2018-05-10 17:40:20 +08:00
    不好处理 直接数据库操作 copy 到 excel
    haoyuwu3
        3
    haoyuwu3  
       2018-05-10 17:40:34 +08:00
    try ...finally
    wsds
        4
    wsds  
    OP
       2018-05-10 17:53:33 +08:00
    @haoyuwu3 异常目测有 10 几路,try 不完啊,
    haoyuwu3
        5
    haoyuwu3  
       2018-05-10 17:56:53 +08:00
    @wsds except 是用来捕获各种异常的,无论异常是什么,finally 在程序结束前都会执行的
    dassh
        6
    dassh  
       2018-05-10 18:13:35 +08:00
    4.用的第三方库是 xlwt,为什么没有写一行,保存一次,因为我发现这货,保存后,再写,之前写的就清空掉了

    试试 openpyxl,至少没有这个问题,而且我记得 xlwt 对 xlsx 支持得不是很好?
    ml1344677
        7
    ml1344677  
       2018-05-10 18:20:18 +08:00
    @dassh +1 对于 xlsx 有可能遇到问题
    q9REUgpVVCU77pWj
        8
    q9REUgpVVCU77pWj  
       2018-05-10 20:05:03 +08:00
    不怕麻烦的话,就写一次,存一次,读一次,再写再存咯。但这也太蛋疼了。
    xjp
        9
    xjp  
       2018-05-10 20:53:01 +08:00
    如果只是简单格式的话 我建议不要用 xlsx 了 也不用第三方库了 直接写 csv 或者干脆\t 分割 excel 也可以直接打开

    open/write 就是干
    Luckyray
        10
    Luckyray  
       2018-05-10 20:56:18 +08:00 via iPhone
    我遇见过个类似的跟楼上思路类似,先保存到文件,就用空格或者逗号分隔,搞定之后再写到 excel
    so1n
        11
    so1n  
       2018-05-10 20:57:51 +08:00
    @dassh 这东西没有追加模式只有写模式?
    RangerWolf
        12
    RangerWolf  
       2018-05-10 21:22:36 +08:00
    我一般是使用 pandas 直接写 Excel
    另外, 两次写文件之间, 至少保持 2-3 秒的间隔。
    lihongjie0209
        13
    lihongjie0209  
       2018-05-10 21:37:00 +08:00
    你就不能先写到 csv 文件中吗???

    假设你的程序运行十分钟, 一分钟创建一个 csv 文件, 把一分钟内的数据都写入到这个文件, 这样报错也只会丢失一分钟内的数据(当然时间间隔可以更小),


    ------ 从这里开始不会收到外部的影响---------
    最后把所有的 csv 文件都合并成一个最终版本.

    最后的最后如果有需要那就把 csv 转成 excel
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1488 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 23:52 · PVG 07:52 · LAX 16:52 · JFK 19:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.