鱼C论坛

 找回密码
 立即注册
查看: 5953|回复: 21

[已解决]python运行bat文件想要命令提示符弹出怎么办

[复制链接]
发表于 2023-3-9 17:43:09 | 显示全部楼层
不应该没有弹出来吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-9 22:30:08 | 显示全部楼层
123lqqq 发表于 2023-3-9 22:26
我在想有什么办法可以显示bat文件已经算完了,或者bat的代码改成python的代码

这个不可能运行没有弹出 cmd 呀,可能还是你的 bat 脚本的问题
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-9 22:46:28 | 显示全部楼层
123lqqq 发表于 2023-3-9 22:40
啊!!!为什么!!!咆哮!!!啊啊啊啊啊

截个图看看
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-10 11:59:19 | 显示全部楼层    本楼为最佳答案   
本帖最后由 isdkz 于 2023-3-10 13:18 编辑
123lqqq 发表于 2023-3-10 11:00
imgse.com/album/5nBxf
啊第一张是代码的截图,第二章是弹出来的面板,第三步是按了计算调用了bat结果文 ...


在 Spyder 中,subprocess在默认情况下似乎无法正常使用creationflags参数来创建新的控制台窗口。

这是由于Spyder本身使用了Qt库来创建GUI,因此它会处理标准输出和标准错误流。

因此,如果使用subprocess在Spyder中调用另一个控制台程序,则该程序的输出可能不会显示在控制台中。

如果您需要在Spyder中运行控制台程序并查看其输出,则可以尝试使用QProcess类。

QProcess类是Qt中的进程控制类,与subprocess类似,但是它与Qt的GUI集成更好。

所以有以下解决办法:

第一个办法:不使用 spyder 运行,比如直接在控制台用 python xxx.py 的方式运行

第二个办法:在设置中修改 spyder 运行使用的默认控制台

微信图片编辑_20230310115455.jpg

截图20230310115709.png

第三个办法:使用 QProcess,不使用 subprocess,

示例代码:
  1. import sys
  2. import os
  3. from PyQt5.QtCore import QProcess


  4. bat_file = 'C:/test/test.bat'                                                                               # 这里改成你自己的 bat 文件的路径
  5. cwd = os.path.dirname(bat_file).replace("/", "\\")

  6. # 在Windows中启动新的控制台窗口,并在其中运行bat文件
  7. if sys.platform == 'win32':
  8.     process = QProcess()
  9.     process.startDetached(
  10.         f'cmd /c start /D {cwd} {bat_file}'
  11.     )
  12. else:
  13.     process = QProcess()
  14.     process.setWorkingDirectory(os.path.dirname(bat_file))
  15.     process.start(f'{bat_file}')
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2023-3-10 12:05:33 | 显示全部楼层
isdkz 发表于 2023-3-10 11:59
在 Spyder 中,subprocess在默认情况下似乎无法正常使用creationflags参数来创建新的控制台窗口。

这 ...

为了解决你的问题我还去装了个 spyder,要个最佳答案不过分吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-10 12:08:44 | 显示全部楼层
123lqqq 发表于 2023-3-10 12:06
大佬,你是我的神!!!我可以请你喝个奶茶啥的吗,真的太感谢你了!!!!

不用不用,太客气啦,给个最佳答案就行
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-10 13:20:53 | 显示全部楼层
123lqqq 发表于 2023-3-10 12:25
啊!你直接把收款码给我,这样可以吗!真的很谢谢你,也只是请您喝点东西


太客气了,我帮别人解决问题我自己也有收获的,

还有上面的代码 cwd = os.path.dirname(bat_file).replace("/", "\\") 这里的第二个参数是有两条反斜杠的,

这个用代码块会不见一条,我要打三条反斜杆才能显示两条
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-9-23 01:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表