我试图用python包装一些fortran。这最终会涉及到字符串和字符数组的操作,所以我想我会尝试在一些简单的东西上练习。在
我在Windows8上使用的是Gfortran4.8.1、Numpy1.9.2和Python3.4.3
我创建了以下fortran代码。在
SUBROUTINE TESTER(my_string,a,b,c,d)
integer a,b,c,d
character(LEN=1000) :: my_string
C stuff for f2py.
Cf2py character, intent(in, out) :: my_string
Cf2py integer, intent(in, out) :: a
Cf2py integer, intent(in, out) :: b
Cf2py integer, intent(in, out) :: c
Cf2py integer, intent(in, out) :: d
a = 1
b = 2
c = 3
d = 4
write(6,*) 'my_string = ',TRIM(my_string)
my_string = TRIM(my_string)//'. I was added!'
write(6,*) 'my_string = ',TRIM(my_string)
end
SUBROUTINE TESTER2(charac)
implicit none
character(LEN=100), allocatable :: charac(:)
C stuff for f2py.
Cf2py character(LEN=100), allocatable, intent(in, out) :: charac(:)
ALLOCATE (charac(4))
charac(4) = 'I was added!'
end
下面是我的python调用。在
^{pr2}$我遇到了两个问题。在
1)当我将字符串text
传递给test.tester
时,我的预期输出是my_string. I was added!
。但是,我得到b'my_string. I was added!
。这个b'
是从哪里来的?我如何摆脱它?在
2)test.tester2
不能用f2py编译。我一直收到错误Tpye mismatch in argument 'charac': passed CHARACTER(1) to REAL(4)
。我做了什么导致这种情况?我如何纠正它?在
注意:这与我的另一个问题Why does f2py not include all arguments?有关。有人告诉我,我在这里所做的可能会解决这个问题。在
目前没有回答
相关问题 更多 >
编程相关推荐