【问题标题】:Run Python script out of python script via .bat [duplicate]通过.bat从python脚本中运行Python脚本[重复]
【发布时间】:2021-12-30 10:21:36
【问题描述】:

我创建了一个 python 脚本,例如HelloWorld.py.

在此脚本中,它通过exec(open("GoodMorning.py").read()) 调用第二个脚本GoodMorning.py

我现在创建了一个.bat 文件来运行我的HelloWorld.py

"C:\Users\myself\AppData\Local\Programs\Python\Python38-32\python.exe" "C:\Users\myself\Desktop\Test\HelloWorld.py"
pause

如果我现在启动 .bat 文件,它会返回错误 no such file or directory: GoodMorning.py

如何进行调整,以便HelloWorld.py 脚本能够在正确的时刻正确启动GoodMorning.py 脚本?

我是否需要对我的HelloWorld.py 脚本或.bat 文件进行调整?

【问题讨论】:

  • 从 Python 运行 Python 几乎从来都不是一个好主意。重构第二个脚本中的代码,以便您可以import 它。如果您需要它们并行运行,请查看multiprocessing

标签: python windows batch-file


【解决方案1】:

HelloWorld.py 和 GoodMorning.py 是否在同一个文件夹中?

我不是 100% 确定,但看起来问题在于您使用 GoodMorning.py 的 相对路径,而不是像“C: \Users\myself\Desktop\Test\GoodMorning.py",并且您的脚本会尝试在 当前工作目录(从您执行 .bat 脚本的位置)而不是所在目录中查找 GoodMorning.py HelloWorld.py 是。如果是这种情况,您有两种选择:

  • 使用 GoodMorning.py 的绝对路径。这是一个非常脆弱的解决方案,只有在没有其他人将您的脚本安装到与“C:\Users\myself\Desktop\Test”不同的文件夹时才有效。

    顺便说一句,你的 .bat 脚本已经很脆弱了,因为它假定你的用户名和 Python 版本(“C:\Users\myself\AppData\Local\Programs\Python\Python38-32\python.exe”) .最好将 Python 添加到 PATH,而不是在脚本中将其称为“python.exe”。

  • 在您的 .bat 脚本或 HelloWorld.py 中,在执行 GoodMorning.py 之前自动将当前工作目录更改为 HelloWorld.py 的位置。这种解决方案更可靠,但编码有点困难。

【讨论】:

  • 嗨@Expurple,感谢您的意见。这只是让我“玩耍”,因此对其他人没有潜在用途。我设法通过更改批处理脚本中的目录找到了解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-11
  • 2018-01-08
  • 1970-01-01
  • 1970-01-01
  • 2018-08-15
  • 2019-01-05
  • 1970-01-01
相关资源
最近更新 更多