python方法报错使程序停止_使用f2py在(Fortran)模块错误中停止python代码?

我正在使用f2py在Fortran中创建一个

Python模块.如果在Fortran模块中遇到错误,我想在Python程序中产生错误(包括错误消息).请考虑以下示例:

Fortran代码(test.f):

subroutine foo(a,m)

integer :: m,i

integer, dimension(m) :: a

!f2py intent(in) :: m

!f2py intent(in,out) :: a

!f2py intent(hide), depend(a) :: m=shape(a)

do i = 1,m

if ( a(i) .eq. 0 ) then

print*, 'ERROR HERE..?'

end if

a(i) = a(i)+1

end do

end subroutine

这个非常简单的程序为a的每个元素添加1.但如果a(i)等于零,应该产生错误.随附的Python代码:

import test

print test.foo(np.array([1,2],dtype='uint32'))

print test.foo(np.array([0,2],dtype='uint32'))

输出现在是:

[2 3]

ERROR HERE..?

[1 3]

但我希望Python程序能够抓住错误.请帮忙.

回答

Fortran中的stop命令就是这样做的.考虑更新的Fortran代码:

subroutine foo(a,m)

integer :: m,i

integer, dimension(m) :: a

!f2py intent(in) :: m

!f2py intent(in,out) :: a

!f2py intent(hide), depend(a) :: m=shape(a)

do i = 1,m

if ( a(i) .eq. 0 ) then

print*, 'Error from Fortran'

stop

end if

a(i) = a(i)+1

end do

end subroutine

输出现在是:

[2 3]

Error from Fortran

即错误后Python代码不会继续.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值