【问题标题】:How to keep a terminal opened by Python alive? [duplicate]如何让 Python 打开的终端保持活跃? [复制]
【发布时间】:2019-12-25 02:05:53
【问题描述】:

在我的 Python 脚本中,我创建了一个 .bat 文件(实际上很多),然后通过

运行它们
os.startfile(blah)

一切都按预期进行,但是,这些终端在完成后会死机。我想让它们保持打开状态,以便我可以在这些打开的终端中手动键入更多命令。

怎么做?

【问题讨论】:

  • this solution 适合您吗?似乎os 保留了工作目录,如果这是您的目的的重要变量......或者您是否需要其他东西,例如,跟踪特定的 bash 变量或其他东西?
  • @MaxvonHippel 我正在尝试创建一个自动评分器,学生们正在提交代码,我想在 12 个案例上测试每个案例。我希望终端在完成后保持打开状态。目录对所有人都是一样的。

标签: python windows


【解决方案1】:

您可以尝试使用cmd 命令运行批处理文件,然后使用cmd 的命令行参数来修改其行为。例如:

os.startfile("cmd.exe /k blah.bat")

可用命令行参数的文档可以在这里找到:

https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/cmd

【讨论】:

  • 我得到这个错误:FileNotFoundError: [WinError 2] 系统找不到指定的文件:'cmd.exe \\k .\\batches\\test11.bat'
  • 试试os.system("cmd.exe /k .\\batches\\test11.bat")。还要小心,在 k 出现正斜杠之前 / 不是反斜杠 \\.
  • @StamKaly 当我切换到 os.system 时,一切都冻结了
  • os.startfile 不支持命令行参数。 (原则上它可以扩展为支持命令行;它只是调用ShellExecuteW。)os.system 通过cmd /c 运行命令,因此除非命令使用start,否则它会等待,例如os.system('start blah.bat')。这会通过cmd /k blah.bat 隐式运行批处理脚本,并使用CreateProcessW 创建标志CREATE_NEW_CONSOLE 来请求新的控制台窗口。
猜你喜欢
  • 2013-05-10
  • 1970-01-01
  • 2018-01-21
  • 2012-05-10
  • 2021-10-05
  • 1970-01-01
  • 2014-12-21
  • 2023-01-13
  • 2022-01-26
相关资源
最近更新 更多