python - 如何捕获子进程错误

标签 python subprocess

在 Python 中,我运行一个使用 FORTRAN 编写的 exe。我使用 subprocess 模块。该exe访问并写入多个文件。如果我将这些文件设置为只读,我会在我的 Python 控制台中看到以下跟踪。

我尝试使用 try, except 语句。但是我无法捕获错误。我还尝试使用 p.stdout.readline()。但是没有成功。

是否有系统的方法来捕获此类错误。

代码:

import subprocess
p = subprocess.Popen('C:\\TGSSR\\test.exe' , shell=True, stdout=subprocess.PIPE)

回溯:

forrtl: severe (9): permission to access file denied, unit 6, file C:\test\mar22_SSOUT\RawReadLog.dat

Image              PC        Routine            Line        Source             
test.exe           0116DC40  Unknown               Unknown  Unknown
test.exe           0113D42F  Unknown               Unknown  Unknown
test.exe           0112AE97  Unknown               Unknown  Unknown
test.exe           0112A1DA  Unknown               Unknown  Unknown
test.exe           0110D746  Unknown               Unknown  Unknown
test.exe           0108B9AC  Unknown               Unknown  Unknown
test.exe           01173FE3  Unknown               Unknown  Unknown
test.exe           011588F5  Unknown               Unknown  Unknown
kernel32.dll       76D33677  Unknown               Unknown  Unknown
ntdll.dll          77A39F42  Unknown               Unknown  Unknown
ntdll.dll          77A39F15  Unknown               Unknown  Unknown

最佳答案

运行进程:

p = subprocess.Popen(['C:\\TGSSR\\test.exe'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
# shell = True is not needed

捕获错误信息:

stdout, stderr = p.communicate()
# stdout = normal output
# stderr = error output

检查进程返回码:

if p.returncode != 0:
    # handle error

关于python - 如何捕获子进程错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22586201/

相关文章:

python - Windows下如何改变Tkinter菜单的颜色?

python - 如何让 pdoc 保留空格?

javascript - 兼容 Django/React App : How to have both Django URLS (for the api to send data) and React URLS (to render my components) in my web app,

python - Python 中的广义 __eq__() 方法

Python subprocess.popen 返回空字符串

python - 同时观看子流程的stdout和stderr

python - 在 QMainWindows 中央小部件中的小部件之间切换

python - 在 cli 函数中使用 python 的子进程会破坏命令行

python : communication with c++ command line program not working when using <cstdio>

Python:Tkinter 关机、重启和 sleep