忘備録

web.pyでファイルをユーザーから受け取ってxlrdでDB登録用のフォーマットに直したい。
と思ったんですが、これがなかなかうまく行かないので難儀しました
結局open_workbook()の引数にweb.input()をそのまま渡す場合は
file_contens = web.input(myfile={}).read()
で行けることが分かりました。
最初は閉じたfoutをとりにいったのですが全然うまく行かない、、、参りました。

やりたいのはここで吸い出したデータをMS Accessに突っ込むことだから
今度はpyodbcを見るかなあ。
でも社内環境だから渋々の選択だが
もっと別のDBの方がいいな。

import web
import xlrd

urls = ('/upload', 'Upload')

class Upload:
    def GET(self):
        web.header("Content-Type","text/html; charset=utf-8")
        return """<html><head></head><body>
        <form method="POST" encype="multipart/form-data" action="">
        <input type="file" name="myfile"/>
        <br/>
        <input type="submit"/>
        </form>
        </body></html>"""
    def POST(self):
        x=web.input(myfile={})
        filedir="/Users/sandbox/upload"
        if "myfile" in x:
            filepath=x.myfile.filename.replace("\\","/")
            filename=filepath.split('/')[-1]
            fout=open(filedir+"/"+filename,"w")
            fout.write(x.myfile.file.read())
            fout.close()
            wb = open_worksheet(file_contents = x.myfile.read())
            ws = wb.sheet_by_index(0)
        raise web.seeother("/upload")
if __name__=="__main__":
    app=web.application(urls, globals())
    app.run()
広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中