Python 解析命令行参数

Python 解析命令行参数,python,parsing,command-line,command-line-arguments,Python,Parsing,Command Line,Command Line Arguments,你们中的一些人可能知道这个脚本,它叫做。运行时,系统会提示用户输入哈希值。我想将散列作为命令行参数传递,以便脚本可以这样执行: hash-identifier d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f 我发现我需要导入sys和getopt,但我以前从未使用过python,所以任何建议都会很有帮助。好的,导入sys后,我只需要将sys.argv传递给正在打印的变量。例如: variable = sys.argv print

你们中的一些人可能知道这个脚本,它叫做。运行时,系统会提示用户输入哈希值。我想将散列作为命令行参数传递,以便脚本可以这样执行:

hash-identifier d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f

我发现我需要导入sys和getopt,但我以前从未使用过python,所以任何建议都会很有帮助。

好的,导入sys后,我只需要将sys.argv传递给正在打印的变量。例如:

variable = sys.argv
print variable

您可以使用sys.argv[0]获取脚本的第一个命令行参数。如果需要更多选项,也可以选择模块。

首选方法是使用argparse:

#!/usr/bin/env python
import argparse

if __name__ == "__main__":
    parser = argparse.ArgumentParser(description="Does something with a hash");
    parser.add_argument("hash", metavar="HASH", help="the hash to do things with?");

    args = parser.parse_args();

    hash = args.hash;

    # Use the hash...
    print(hash);
但是使用argparse可能有点过分,因为这样做可能更简单:

#!/usr/bin/env python

import sys

if __name__ == "__main__":
    if len(sys.argv) != 2: # first is program name, second is argument
        print("USAGE: %s HASH"%(sys.argv[0],));
        sys.exit();
    hash = sys.argv[1];

    # Use the hash...
    print(hash);