使用特殊命令iceweasel执行脚本(这是Debian的火狐浏览器)

0 投票
1 回答
559 浏览
提问于 2025-04-18 10:21

我遇到了一个问题,我想运行我的Python脚本,但需要用特定的命令来执行,比如这样:

iceweasel 'info.py server.py path_install.py'

这个命令必须在客户端输入,然后我们就可以打开一个页面,查看相关信息:

info.py (= os and ip of client)
server.py
path_install.py

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

1 个回答

1

需求审查

看起来,你想要:

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

概念

  • 使用 docopt 来解析命令行参数(argparseplac 等也是不错的选择)
  • 打印一些关于文件的信息(因为不太清楚你想报告哪些关于 Python 文件的细节,可以根据自己的需要修改)

iceweasel.py

"""
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

$ pip install docopt

不带参数调用命令:

$ python iceweasel.py
Usage:
    iceweasel.py <pythonfile>...
    iceweasel.py -h

尝试帮助信息

$ python iceweasel.py -h
Usage:
    iceweasel.py <pythonfile>...
    iceweasel.py -h

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

对一个文件使用:

$ python iceweasel.py iceweasel.py 

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

对多个文件使用,使用通配符:

$ 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 从 2.7 版本开始似乎是 Python 的标准部分
    • argparse 功能强大,但需要比较复杂的多行调用
    • plac 是一个不错的替代方案,在大多数情况下可以快速服务
    • docopt 在我看来是最灵活的,同时所需的代码行数也最少
  • 如果你不想在每次调用脚本时都输入 python,还有其他选择
    • 在脚本的第一行使用 shebang #!/usr/bin/env python,设置为可执行,然后你甚至可以去掉 .py 后缀。这只在 *nix 系统上有效,不适用于 Windows
    • 编写自己的 setup.py 来安装脚本。这在任何地方都有效,但需要多写一些代码。不过,如果你预期会有更多用户使用这个脚本,这可以大大简化安装过程,是一个非常有效的解决方案。

撰写回答