0

git statusにスペースを含むプログラム名 ( など)を含めるにはどうすればよいdocoptですか? Perl スクリプトが Python スクリプトをディスパッチするセットアップがあります。Perl スクリプトはさまざまな方法で呼び出すことができます。簡単にするために次のように言いましょうprog sub1 sub2。したがって、Perl スクリプトの名前はprog. これで、sub2usingという Python スクリプトがディスパッチされsub2 --progName="prog sub1 sub2" [options]ます。(したがって、実際のプログラム名はsub2butではありませんprog sub1 sub2)。docoptたとえば、 を使用してこのスキームを実装しようとしました。

"""Usage: %progName% [-h]

Options:
  -h --help
"""

from docopt import docopt
import sys

if __name__ == '__main__':
    progName=sys.argv[0]
    for i, arg in enumerate(sys.argv):
        if arg.startswith('--progName='):
            ind=arg.index("=")+1
            progName=arg[ind:]
            del sys.argv[i]
            break
    doc=__doc__.replace('%progName%',progName)
    args = docopt(doc)
    print(args)

ただし、これはコマンド名 ( ) にスペースがあると機能しませんprog sub1 sub2

4

1 に答える 1