繁体   English   中英

如何为可执行的 python 脚本包含可选输入?

[英]How do you include an optional input for an executable python script?

我是一个相当新手的程序员。

我试图弄清楚如何制作它,以便 python 脚本在命令提示符中调用时接受输入,并且在没有输入时具有默认值。

基本上,它是一个程序,默认情况下会以一种方式运行C:Program Files\Sample\Sample.exe如果您执行类似C:Program Files\Sample\Sample.exe "option 2"之类的操作,则会以另一种方式运行。 这可能吗?

python 中是否有我必须做的事情或从.py 到.exe 的转换? 我正在使用 pyinstaller 来转换脚本。

提前谢谢您,如果这不是很专业的问题,我们很抱歉。

你看过sys.argv吗? 它包含命令行arguments,第一个值是程序本身。

import sys

thing = "default"
if len(sys.argv) > 1:
    thing = sys.argv[1]

print("Thing is: ", thing)

像这样运行:

$ python3.7 ex.py
Thing is:  default
$ python3.7 ex.py a
Thing is:  a

您还可以使用argparse模块,它提供了更大的灵活性:

import argparse

parser = argparse.ArgumentParser(description='Example.')
parser.add_argument('thing', type=str, nargs="?", default="default")

args = parser.parse_args()
print("Thing is", args.thing)

产生相同的结果:

$ python3.7 ex.py
Thing is default
$ python3.7 ex.py a
Thing is a

您还可以使用click库,它提供了更大的灵活性:

import click

@click.command()
@click.argument('thing', default="default")
def program(thing):
    print("Thing is", thing)

if __name__ == '__main__':
    program()

一样:

$ python3.7 ex.py
Thing is default
$ python3.7 ex.py a
Thing is a

一个简单的例子

#!/usr/bin/python
import sys

def program(arguments):
    if arguments:
        for arg in arguments:
            print(arg + '\n')
    else:
        print('no arguments')


if __name__ == "__main__":
    program(sys.argv[1:])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM