|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
代码跑通啦,但是有个小问题,python运行bat程序不弹出cmd的框,没办法知道什么时候才算完结果,每次都是自己盯着文件夹看有没有particle文件出现
求大佬指点一下,感谢感谢!!!!
- import subprocess
- import os
- if __name__ == '__main__':
- bat_path = r'E:/DualSPHysics_v5.0.5/DualSPHysics_v5.0/examples/inletoutlet/0_inlet+dem/wCaseIn_win64_CPU.bat'
- process = subprocess.Popen(bat_path, creationflags=subprocess.CREATE_NEW_CONSOLE, cwd=os.path.dirname(bat_path))
复制代码
本帖最后由 isdkz 于 2023-3-10 13:18 编辑
在 Spyder 中,subprocess在默认情况下似乎无法正常使用creationflags参数来创建新的控制台窗口。
这是由于Spyder本身使用了Qt库来创建GUI,因此它会处理标准输出和标准错误流。
因此,如果使用subprocess在Spyder中调用另一个控制台程序,则该程序的输出可能不会显示在控制台中。
如果您需要在Spyder中运行控制台程序并查看其输出,则可以尝试使用QProcess类。
QProcess类是Qt中的进程控制类,与subprocess类似,但是它与Qt的GUI集成更好。
所以有以下解决办法:
第一个办法:不使用 spyder 运行,比如直接在控制台用 python xxx.py 的方式运行
第二个办法:在设置中修改 spyder 运行使用的默认控制台
第三个办法:使用 QProcess,不使用 subprocess,
示例代码:
- import sys
- import os
- from PyQt5.QtCore import QProcess
- bat_file = 'C:/test/test.bat' # 这里改成你自己的 bat 文件的路径
- cwd = os.path.dirname(bat_file).replace("/", "\\")
- # 在Windows中启动新的控制台窗口,并在其中运行bat文件
- if sys.platform == 'win32':
- process = QProcess()
- process.startDetached(
- f'cmd /c start /D {cwd} {bat_file}'
- )
- else:
- process = QProcess()
- process.setWorkingDirectory(os.path.dirname(bat_file))
- process.start(f'{bat_file}')
复制代码
|
|