推荐学习书目
› 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 · May 10, 2018 · 3515 views
    This topic created in 3062 days ago, the information mentioned may be changed or developed.
    1.python 脚本处理一些数据,从外部写数据到 excel,外部因素非常多

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

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

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

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

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

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


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

    最后的最后如果有需要那就把 csv 转成 excel
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   928 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 48ms · UTC 18:28 · PVG 02:28 · LAX 11:28 · JFK 14:28
    ♥ Do have faith in what you're doing.