首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用特殊命令iceweasel执行脚本(这是debian的firefox for浏览器)

使用特殊命令iceweasel执行脚本(这是debian的firefox for浏览器)
EN

Stack Overflow用户
提问于 2014-06-19 11:11:09
回答 1查看 544关注 0票数 0

我有一个问题,我想执行我的python脚本,但是使用这样的特殊命令:

代码语言:javascript
复制
iceweasel 'info.py server.py path_install.py'

必须在客户端上输入此命令,然后使用以下信息打开页面:

代码语言:javascript
复制
info.py (= os and ip of client)
server.py
path_install.py

但我真的不知道该从哪里开始.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-19 11:28:53

需求审查

看来,你想:

  • 从命令行调用程序
  • 传入任意数目的python文件名。
  • 对于每个python文件,打印有关该文件的一些详细信息。

概念

  • 使用docopt进行命令行参数解析(argparseplac等也是替代方法)
  • 打印一些有关该文件的信息(因为它不是很清楚,您想要报告的Python文件的详细信息--随您喜欢修改它)

iceweasel.py

代码语言:javascript
复制
"""
Usage:
    iceweasel.py <pythonfile>...
    iceweasel.py -h

Prints internal details for arbirtary set of <pythonfile> files.
"""
import os

def srcdetails(fname):
    with open(fname) as f:
        content = f.read()
    shortname = os.path.split(fname)[-1]
    size = len(content)
    words = len(content.split())
    templ = """
    ---- {fname} -----
    short name: {shortname}
    size: {size}
    words: {words}
    """
    print templ.format(**locals())

def main(pythonfiles):
    for fname in pythonfiles:
        srcdetails(fname)

if __name__ == "__main__":
    from docopt import docopt
    args = docopt(__doc__)
    pythonfiles = args["<pythonfile>"]
    main(pythonfiles)

用它

先安装docopt

代码语言:javascript
复制
$ pip install docopt

不带参数地调用命令:

代码语言:javascript
复制
$ python iceweasel.py
Usage:
    iceweasel.py <pythonfile>...
    iceweasel.py -h

试着帮忙

代码语言:javascript
复制
$ python iceweasel.py -h
Usage:
    iceweasel.py <pythonfile>...
    iceweasel.py -h

Prints internal details for arbirtary set of <pythonfile> files.

将其用于一个文件:

代码语言:javascript
复制
$ python iceweasel.py iceweasel.py 

    ---- iceweasel.py -----
    short name: iceweasel.py
    size: 692
    words: 74

使用通配符将其用于多个文件:

代码语言:javascript
复制
$ python iceweasel.py ../*.py

    ---- ../camera2xml.py -----
    short name: camera2xml.py
    size: 567
    words: 47


    ---- ../cgi.py -----
    short name: cgi.py
    size: 612
    words: 63


    ---- ../classs.py -----
    short name: classs.py
    size: 485
    words: 44

结论

  • 在Python 中,命令行解析可以很容易。
    • argparse似乎是Python2.7版本以来的标准部分
    • argparse可以做很多事情,但是需要在许多行上进行相当复杂的调用。
    • plac是很好的替代方案,在大多数情况下可以快速地提供服务。
    • 在我看来,docopt是最灵活的,同时在所需的代码行中最短。

  • 如果您不希望在每次调用脚本时调用python,则会有其他
    • 使用shebang #!/usr/bin/env python作为脚本的第一行,设置它为可执行文件,然后您甚至可以删除.py扩展。只在*nix上工作,而不适用于Windows。
    • 编写自己的setup.py并执行任务以安装脚本。在任何地方都可以工作,但是需要更多的编码。另一方面,如果您期望更多的用户使用该脚本,它可能是非常有效的解决方案,因为它可以大大简化安装过程。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24305156

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档