如何创建一个带参数的命令行程序?

时间:2010-02-25 17:11:29

标签: python windows command-line

如何创建命令行,以便我可以在Windows上使用一些参数执行我的程序...

例如:

C:/Program/App.exe -safemode

9 个答案:

答案 0 :(得分:9)

查看标准库中的getoptoptparse模块,关于更高级的argparse模块也可以说很多好事。

通常,您只需访问sys.argv

答案 1 :(得分:7)

我觉得您还想生成一个可以独立运行的“可执行文件”....为此,您使用py2exe

这是一个完整的example.py

import optparse

parser = optparse.OptionParser()

parser.add_option("-s", "--safemode",
                  default = False,
                  action = "store_true",
                  help = "Should program run in safe mode?")

parser.add_option("-w", "--width",
                  type = "int",
                  default = 1024,
                  help = "Desired screen width in pixels")

options, arguments = parser.parse_args()

if options.safemode:
    print "Proceeding safely"
else:
    print "Proceeding dangerously"

if options.width == 1024:
    print "running in 1024-pixel mode"
elif options.width == 1920:
    print "running in 1920-pixel mode"

以下是一个完整的setup.py,可将上述example.py转换为example.exe(位于dist子目录中):

from distutils.core import setup
import py2exe
import sys

sys.argv.append('py2exe')

setup(
    options = {'py2exe': dict(bundle_files=1, optimize=2)},
    console = ["example.py"],
    zipfile = None,
    )

答案 2 :(得分:3)

您是在谈论传递给python脚本的参数吗?

'你可以通过

访问它们
import sys
print sys.argv

或者可以使用更复杂的getopt模块。

答案 3 :(得分:2)

不是蟒蛇家伙(但无论如何)但是我的Google-fu发现了这个假设你的意思是“处理命令行参数”:
http://www.faqs.org/docs/diveintopython/kgp_commandline.html

答案 4 :(得分:2)

使用optparse.OptionParser

from optparse import OptionParser
import sys

def make_cli_parser():
    """Makes the parser for the command line interface."""
    usage = "python %prog [OPTIONS]"
    cli_parser = OptionParser(usage)
    cli_parser.add_option('-s', '--safemode', action='store_true',
            help="Run in safe mode")
    return cli_parser

def main(argv):
    cli_parser = make_cli_parser()
    opts, args = cli_parser.parse_args(argv)
    if opts.safemode:
        print "Running in safe mode."
    else:
        print "Running with the devil."


if __name__ == '__main__':
    main(sys.argv[1:])

使用中:

$ python opt.py
Running with the devil.
$ python opt.py -s
Running in safe mode.
$ python opt.py -h

Usage: python opt.py [OPTIONS]
Options:
  -h, --help      show this help message and exit
  -s, --safemode  Run in safe mode

答案 5 :(得分:0)

或者您只是在问如何打开命令行?

转到开始菜单,点击“运行”(或在Windows 7中输入),输入“cmd”

这将打开一个命令shell。 鉴于你的问题被标记为python,我不确定它是否会被编译成exe,你可能需要输入“python(你的源码在这里).py -safemode”。

答案 6 :(得分:0)

其他评论解决了如何处理参数。如果你想让你的python程序成为一个exe,你可能想看看py2exe

这不是必需的,但您提到了App.exe而不是App.py

答案 7 :(得分:0)

您提出的问题有多个级别的答案。

首先,将命令行传递给数组sys.argv。 argv是C和Unix语言的历史名称。所以:

~/p$ cat > args.py
import sys
print "You have ", len(sys.argv), "arguments."
for i in range(len(sys.argv)):
print "argv[", i, "] = ", sys.argv[i]

~/p$ python args.py 34 2 2 2
You have  5 arguments.
argv[ 0 ] =  args.py
argv[ 1 ] =  34
argv[ 2 ] =  2
argv[ 3 ] =  2
argv[ 4 ] =  2

这适用于MS Windows和Unix。

其次,你可能会问“我如何得到好的论据?让它处理/帮助 MS Windows或Linux中的--help?“

嗯,有三种选择可以尝试做你想要的。其中两个optparsegetopt已经在标准库中,而argparse正在进行中。所有这三个都是以sys.argv字符串数组开头的库,对命令行参数的描述,并返回某种数据结构或类, 你可以得到你的意思。

  • getopt完成最小的工作。它不提供“/ help”或“--help”。
  • optparse做得更详细。它提供“/ help”以及短期和长期 选项的版本,例如“-v”和“--verbose”。
  • argparse处理厨房水槽,包括“/ help”,短命和长命令, 以及子命令结构,正如您在源代码管理“git add ....”中看到的那样,以及 位置论证。

当您转向更丰富的解析时,您需要为解析器提供有关您希望命令行参数的更多详细信息。例如,你需要传递一个长写 如果你想让--help参数打印它,那么参数的描述。

第三,你可能会要求一个只处理命令选项的工具 行,环境变量和配置文件。 Python目前有单独的工具 对于这些。也许我会写一个统一的,你需要:    - 由argparse或getopt等解析的命令行参数。    - 来自os.environ []的环境变量    - 来自ConfigFile或plistlib等的配置文件 并建立自己的答案“什么是设置”?

希望这完全回答你的问题

答案 8 :(得分:0)

其中一种方式:

import sys
print sys.argv

>>>python arg.py arg1 arg2
['arg.py', 'arg1', 'arg2']



sys.argv是一个包含所有参数(也是脚本/程序名称)的列表,作为字符串。