python - 是否可以从 Windows 命令提示符运行 python 脚本并同时传递该脚本的参数?

标签 python python-3.x command-line windows-10

我有一个保存的Python脚本。我在 Windows 10 中从命令提示符运行此 python 脚本。

这就像导航到脚本所在的目录然后键入:

python myscript.py

并且脚本将正常运行。

但是,有时,我想运行此脚本,以便将该脚本中的变量设置为一个值,有时设置为另一个值。此变量告诉脚本通过哪个端口操作 API 连接(如果相关)。

目前,我每次都会进入脚本并将变量更改为我想要的变量,然后运行脚本。有没有办法在 Windows 10 中从命令提示符运行脚本时设置变量?

或者是否有任何其他有效的解决方案可以在运行时实现相同的灵活性?

谢谢

最佳答案

通常的方法是使用命令行参数。事实上,在传递文件名列表之后,传递端口号几乎是命令行参数的范例。


对于简单的情况,您可以在代码中使用 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 中的所有选项可能会让人不知所措。


另一种选择是使用环境变量。如果您想为每次运行更改它,这会更乏味,但如果您想在命令行 session 中为整个系列的运行设置一次,甚至设置计算机范围的默认值,那就容易多了。

在代码中,您可以查看 os.environ :

port = int(os.environ.get('MYSCRIPT_PORT', 12345))

然后,设置端口:

MYSCRIPT_PORT=54321
python myscript.py

您可以将两者结合起来:使用命令行参数(如果存在),否则回退到环境变量,否则回退到默认值。或者甚至添加配置文件和/或(如果您只关心 Windows)注册表设置。 Python 本身会像许多主要服务器一样执行三步回退之类的操作,但对于您的简单用例来说,它可能有点过分了。

关于python - 是否可以从 Windows 命令提示符运行 python 脚本并同时传递该脚本的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49763252/

相关文章:

python - 在 python 中搜索通配符的字符串并返回匹配位置

python - 在numpy中,为什么.var()是一个方法,而mean()是一个普通函数?

python - 我想防止 Pygame 中的对角线移动

python - 如何为 Heroku 上部署的电报机器人编写定期重复的函数

python - 奇怪的是,使用某些 URL 无法为 Amazon Mechanical Turk 制作 HIT?

python - 如何在Python中使用Selenium连续抓取网页中的文章

python - 尝试在 Ubuntu 16.04 上运行 pip3 时出错

linux - Netbeans 7.1 内置终端命令

node.js - 在 Node 中调用 child_process.exec 就像在特定文件夹中执行一样

java - 从命令行编译时如何包含 Java 类?