write()写的文件无法在Windows中打开

时间:2014-08-13 02:40:33

标签: python web.py

代码在这里:

#!/usr/bin/env python
#-*-coding:utf-8 -*-

import web

urls=('/','index')

class index:
    def GET(self):
        web.header("Content-Type","text/html; charset=utf-8")
        return """<html><head></head><body>
        <form method="POST" enctype="multipart/form-data" action="">
        <input type="file" name="mainTable" />
        <br/>
        <input type="submit" />
        </form>
        </body></html>"""
    def POST(self):
        i=web.input(mainTable={})
        fout=open(".\\tables\\main.xls",'w')
        fout.write(i.mainTable.file.read())
        fout.close()
if __name__=="__main__":
    app=web.application(urls,globals())
    app.run()

我把它放在linux服务器上,它运行正常,excel文件上传成功(当然必须更改路径格式),我可以下载并用excel打开它。

但是当我把它放在Windows服务器上时,文件已上传,但我无法打开它。 excel表示文件已损坏。那么我的代码有什么问题呢?

1 个答案:

答案 0 :(得分:3)

来自the docs

  

默认设置是使用文本模式,可以转换'\n'个字符   在写作和回读时的特定平台表示。   因此,在打开二进制文件时,您应该将'b'附加到该模式   以二进制模式打开文件的值,这将提高可移植性。   (即使在不处理二进制文件的系统上,附加'b'也很有用   文本文件不同,它用作文档。)

fout=open(".\\tables\\main.xls", 'wb')