【问题标题】:Running Python Script, without Console, omni-solution运行 Python 脚本,无需控制台,全方位解决方案
【发布时间】:2016-07-06 18:05:57
【问题描述】:

我有一个项目计划,

main.py

我希望有可能以 3 种不同的方式执行它,每个可执行文件/脚本。

1 py main.py

2 pyw main.py

3 py main.py bd / pyw main.py bd

如果它只在我的系统上,那不是问题,但它必须在使用的系统上执行

python3

而不是

py

因此,即使我为我的系统构建了一个简单的解决方法,我仍然必须为我的大学构建第二个解决方法或永久复制一些东西,如果我对其进行了轻微的更改。


是否有 3 个不同的脚本,它们以不同的方式启动 main.py。也许有一些棘手的 python arg 总是会在 pyw 中启动 main.py。

【问题讨论】:

  • 喜欢大家投票否决的方式,甚至没有告诉我为什么我应该投反对票。我敢打赌,他们读了“没有控制台的 Python”,并认为“得到了 100 次的回答……投反对票!” ...如果我遗漏了什么,请至少说出来。我读了大部分这些问题。我不能用 .pyw 作为结尾,也不能只用 pyw 来执行。
  • 您知道__name__ 变量和/或sys.argv??
  • 我一直使用 argv,if __name __ == "__main__": 几乎出现在我的每个程序中。
  • 但这至少从我幼稚的角度来看与我的问题无关。 实际上 bd 是一个 argv 用于 GUI 的边框版本
  • 然后看看我,你真正想要的是识别何时用pythonpythonw 调用你的脚本,然后几个if 就可以解决问题。目前你是怎么做的?

标签: python shell command-line argv


【解决方案1】:

对于执行其他脚本的脚本,请查看subprocess module

为了帮助您处理命令行参数,您可以查看argparse module(如果您还没有)

无论如何,我在这里看到 3 个案例

1) 制作 3 个脚本,每种情况一个,然后根据命令行选项制作 4° 一个以在它们之间进行选择

case1.py
case2.py
case3.py

还有 4°

#main.py
...
if something:
    import case1 as main
elif something_else:
    import case2 as main
else:
    import case3 as main

main.main(...)

2) 拥有你的主脚本,并制作另外 3 个,其中唯一的工作是使用所需选项调用主脚本,或者导入主脚本并根据需要执行它

main.py

案例

#caseX.py
import main
main.main([options of case X])

3) 添加额外的命令行选项以在具有合适默认值的情况之间进行选择

#main.py
...
def main(opt):
    ...

if __name__=="__main__":
    options=[]
    #process argv
    ...
    main(options)

【讨论】:

  • 我不需要检查它是python 还是pythonw,如果它是任何一个版本,我都不需要更改任何内容。我只需要通过不同的脚本以不同的方式执行文件的可能性。一个脚本应该使用控制台执行它。第二个没有控制台。第三个应该使用 argv bd 执行它。
  • 子流程模块可能会有所帮助,但我真的必须通过它来理解它,然后给你一个反馈。
  • 我添加了一些更改,更像您需要的?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多