我有一个保存下来的python脚本。我在Windows 10中的命令提示符中运行这个python脚本。
这很简单,只要导航到脚本所在的目录,然后键入:
python myscript.py剧本会运行得很好。
但是,有时,我希望运行这个脚本,以便将脚本中的变量设置为一个值,有时设置为另一个值。这个变量告诉脚本要通过哪个端口来操作API连接(如果相关的话)。
目前,我每次都会进入脚本,并将变量更改为我想要的变量,然后运行脚本。是否有方法在Windows 10中命令提示符运行脚本时设置变量?
或者,在运行时是否有其他有效的解决方案来实现同样的灵活性?
谢谢
发布于 2018-04-10 21:47:56
通常的方法是使用命令行参数。实际上,在传递文件名列表之后,传递端口号几乎是命令行参数的范例。
对于简单的情况,您可以使用sys.argv在代码中处理这个问题。
port = int(sys.argv[1])或者,如果您想要一个默认值:
port = int(sys.argv[1]) if len(sys.argv) > 1 else 12345然后,运行该程序:
python myscript.py 54321对于更复杂的情况--当您有多个标志时,有些标志具有值,等等--您通常希望使用类似于argparse的东西。但是,您可能希望在设计第一个命令行接口之前,先阅读一下典型的命令行接口,然后再看看常用工具的参数。因为仅仅看一下argparse中的所有选项,而事先不知道您想要的是什么,可能会非常令人难以抗拒。
另一种选择是使用环境变量。如果您想为每次运行更改它,但是如果您想在命令行会话中为整个系列的运行设置一次,或者甚至设置一个计算机范围的默认设置,那么这就更简单了。
在代码中,您可以查看os.environ
port = int(os.environ.get('MYSCRIPT_PORT', 12345))然后,设置一个端口:
MYSCRIPT_PORT=54321
python myscript.py您可以将两者结合起来:如果存在命令行参数,则使用命令行参数,否则返回到环境变量,否则返回到默认状态。甚至添加配置文件和/或(如果您只关心Windows)注册表设置。Python本身做了一些类似于三步后退的事情,就像许多主要的服务器一样,但是对于简单的用例来说,它可能是过分的。
发布于 2018-04-10 21:50:44
你应该看看at解析。以下是一个例子:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("-m", help='message to be sent', type=str)
args = (parser.parse_args())
print args.m您创建的每个参数都像字典一样保存,所以您必须在代码中调用它,就像我对print语句所做的那样。
"args.m" < ---- This specifies the argument passed you want to do stuff with以下是我的输入/输出:
C:\Users\Vinny\Desktop>python argtest.py -m "Hi"
Hi
C:\Users\Vinny\Desktop>更多关于More解析的信息:https://docs.python.org/3/library/argparse.html
发布于 2018-04-10 21:47:42
https://stackoverflow.com/questions/49763252
复制相似问题