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
littlewey
V2EX  ›  Python

非程序员第一次写自己的Python程序, 请问怎样把一个python本地小工具改造成网站上的工具

  •  
  •   littlewey ·
    wey-gu · 2013-11-24 03:10:03 +08:00 · 4615 次点击
    这是一个创建于 3805 天前的主题,其中的信息可能已经有所发展或是发生改变。
    背景:
    陆陆续续自学了好几个月的Python了,之前也没掌握过任何一门语言. 今天终于写出来了自己想了好几个礼拜的小工具, 是文本处理的, 可以代替公司里我们team内部的一个机械化的工作, Team里同事都不是程序员, 没有Python环境, 加上我想学习下网络相关的东西, 我希望进一步可以把这个Python小工具做成在网页上的在线的工具.

    我的做的小工具的input是三个文本文件, output是 print出来的结果.

    现在:
    我目前的思路是, 看看SAE文档, 着手开始做,不知道理论上有没有什么硬伤.

    问题:
    这种需求我猜是不需要Django那种框架实现的, 我的计算机/网络基础知识不多,需要学习哪些方面东西呢?

    多谢大家拍砖, 指路!!!
    第 1 条附言  ·  2013-11-24 21:47:26 +08:00
    非常感谢大家, 我用Flask写好了, 好多东西都在今天一天的挣扎中不断卡住然后不断解决了, 第一次有coding的感觉,好棒~~

    我准备开始往SAE上放了

    我现在还有一个问题想请教一下:

    我在本地用的那个Python虚拟环境 virtualenv上跑的Flask, 我现在都分不清哪些是我的文件了, 里边没有wsgi呀,我有点懵了, 我还装了dev_server, 我应该怎么做呢? 我有点分不清那部分文件要放到SVN的那个folder下.
    第 2 条附言  ·  2013-11-24 22:11:25 +08:00
    解决了, 参照dev_server里的例子修改了wsgi :-)
    14 条回复    2015-06-10 05:15:17 +08:00
    liuxurong
        1
    liuxurong  
       2013-11-24 03:55:52 +08:00   ❤️ 1
    PHP + 一键环境包比较适合你这个。

    Python 弯路多啊。
    yakczh
        2
    yakczh  
       2013-11-24 08:14:52 +08:00   ❤️ 1
    python路上满地是坑,虐人无数,除非是有大量闲时间的可以折腾
    如果要短平快用php
    echo transform($_POST['input'])
    muzuiget
        3
    muzuiget  
       2013-11-24 09:40:15 +08:00   ❤️ 3
    我反而觉得 PHP 的坑比 Python 多得多了。

    楼主,首先改进你的代码,把处理部分的函数的参数,接受 3 个文件名改为接受 3 个字符串,也就是把「从文件读取文本」的功能分离出来,在另外一个函数先处理好,因为对于网络来说,不是读文件,而是读网页表单数据,但是无论是从文件读取还是从网络读取,处理流程都是一样的,所以处理函数可以重用。

    例如 handle(filename1, filename2, filename3) 改成 handle(text1, text2, text3)

    可能你这部分已经做好了。

    SAE 支持多个 Pyhton 的 web 框架,对于你这种小工具,选择微框架就行了。我推荐 Flask。不到 20 行代码就搞定了。

    from flask import Flask, request
    import my_module
    app = Flask(__name__)

    @app.route("/")
    def hello():
    text1 = request.args.get('input1')
    text2 = request.args.get('input2')
    text3 = request.args.get('input3')
    return my_module.handle(text1, text2, text3)

    if __name__ == "__main__":
    app.run()

    运行后这样访问 http://localhost:5000/?input1=111&input=222&input3=333
    muzuiget
        4
    muzuiget  
       2013-11-24 09:42:25 +08:00   ❤️ 2
    不小心提交了……缩进也被吞了。

    三个 textN 参数就对应 111,222,333。如果文本量很大,改成 post 的方法, 用 textarea 来填数据,自行研究。用 post 的话,Flask 里改用 request.form.get('input1')
    Livid
        5
    Livid  
    MOD
       2013-11-24 10:01:07 +08:00   ❤️ 2
    可以先学习一个简单的框架,然后把你的代码弄进去。

    http://flask.pocoo.org/
    bombless
        6
    bombless  
       2013-11-24 11:06:08 +08:00   ❤️ 1
    我觉的你自己弄太花时间了。还不如找个信任的人把代码丢给他。
    这种应该是小改一下就可以上线。然后你就会发现交互方面有诸多不如意的地方。
    接下来就是漫长的修改过程。

    如果真要认真负责搞起来,那就像楼上建议的,先好好学一个框架,然后可能在框架内再写一次
    第二次肯定比第一次写起来快的多吧?唯一的问题是要小心第二系统综合症。
    weakish
        7
    weakish  
       2013-11-24 17:57:42 +08:00
    推荐一下 bottle,超容易上手的小框架。

    我以前写的一个小应用可以当例子: https://gist.github.com/weakish/510960#file-stupidm_web-py
    weakish
        8
    weakish  
       2013-11-24 21:08:36 +08:00   ❤️ 1
    不好意思,刷屏了,不知道 gist 展开不认 `#file` 语法……
    littlewey
        9
    littlewey  
    OP
       2013-11-24 21:53:10 +08:00
    @muzuiget Thanks! 不过 request下边好像没有 form.get 吧? 我后来用的是files 然后文件是read()成str再split了的:-)
    littlewey
        10
    littlewey  
    OP
       2013-11-24 21:56:03 +08:00
    @bombless 哈哈, 其实是主要想学Python, 然后还能造福我们Team的工作, 昨天从中午弄到晚上两点多, 今天一整天感觉时间好快, 好充实哈哈!! 不过有mentor直接告诉我方向, 或者帮我基本弄起来架子确实能高效一些, 这就是自学跟在公司的区别吧TAT
    littlewey
        11
    littlewey  
    OP
       2013-11-24 21:59:33 +08:00
    @weakish 扫了一眼, 您这个对我将非常有帮助, 我等部署完了sae上线了,再好好看看你的, 我弄的可山寨了, 比如我现在只会 return string, 就把结果弄成 list然后 变成string, 中间加行加 <br>, 头和尾加 html的头和尾... TAT
    weakish
        12
    weakish  
       2013-11-25 20:51:01 +08:00
    @littlewey 这里貌似没法引用gist中的单一文件。你看这个就好 `https://gist.github.com/weakish/510960#file-stupidm_web-py` (基于bottle框架)。 我是文科生,代码各种渣,不过这个服务比较简单,所以自我感觉写得还过的去。
    weakish
        13
    weakish  
       2013-11-25 20:54:06 +08:00
    擦,放在``中 gist 还会被展开…… 我的意思是这个 https://

    gist.github.com/weakish/

    510960#file-stupidm_web-py
    Septembers
        14
    Septembers  
       2015-06-10 05:15:17 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3385 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 12:06 · PVG 20:06 · LAX 05:06 · JFK 08:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.