如何创建命令行,以便我可以在Windows上使用一些参数执行我的程序...
例如:
C:/Program/App.exe -safemode
答案 0 :(得分:9)
答案 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)
答案 3 :(得分:2)
不是蟒蛇家伙(但无论如何)但是我的Google-fu发现了这个假设你的意思是“处理命令行参数”:
http://www.faqs.org/docs/diveintopython/kgp_commandline.html
答案 4 :(得分:2)
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?“
嗯,有三种选择可以尝试做你想要的。其中两个optparse和getopt已经在标准库中,而argparse正在进行中。所有这三个都是以sys.argv字符串数组开头的库,对命令行参数的描述,并返回某种数据结构或类, 你可以得到你的意思。
当您转向更丰富的解析时,您需要为解析器提供有关您希望命令行参数的更多详细信息。例如,你需要传递一个长写 如果你想让--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是一个包含所有参数(也是脚本/程序名称)的列表,作为字符串。