在 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/