Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用f2py在Python中嵌入Fortran_Python_Fortran_F2py - Fatal编程技术网

用f2py在Python中嵌入Fortran

用f2py在Python中嵌入Fortran,python,fortran,f2py,Python,Fortran,F2py,我需要一个脚本在目录结构中递归,从目录中的文件中提取数字,然后对这些数字执行计算。我使用Python作为脚本的主要语言,但希望使用Fortran进行数值计算。(我更喜欢Fortran,它是数值计算的更好工具) 我正在尝试使用f2py,但我不断地遇到奇怪的错误。f2py正在抱怨我的变量声明,试图将字符(*)更改为整数并追加!当我在变量声明后立即有注释时,将其添加到变量名上 子例程太长,无法在此处发布,但需要两个参数:输入文件名和输出文件名。它打开输入文件,读取数字,处理它们,然后写入输出文件。我打

我需要一个脚本在目录结构中递归,从目录中的文件中提取数字,然后对这些数字执行计算。我使用Python作为脚本的主要语言,但希望使用Fortran进行数值计算。(我更喜欢Fortran,它是数值计算的更好工具)

我正在尝试使用f2py,但我不断地遇到奇怪的错误。f2py正在抱怨我的变量声明,试图将字符(*)更改为整数并追加!当我在变量声明后立即有注释时,将其添加到变量名上

子例程太长,无法在此处发布,但需要两个参数:输入文件名和输出文件名。它打开输入文件,读取数字,处理它们,然后写入输出文件。我打算使用Python脚本在每个目录中编写数字文件,并在其上调用Fortran子例程

我可以试着用同样的问题发布一个较小的示例,但是f2py有什么共同的“缺陷”吗?我使用的是gfortran v4.6.1、python v3.2.2和f2py v2

编辑:下面是一个小示例,有相同的错误:

itimes-s.f(包含从python使用的子例程的文件):

a、 txt:

1
2
3
4
5
6
7
8
9
10.2
b、 仅使用gfortran编译和运行itests和itimes-s后的txt:

   1.0000000000000000     
   4.0000000000000000     
   9.0000000000000000     
   16.000000000000000     
   25.000000000000000     
   36.000000000000000     
   49.000000000000000     
   64.000000000000000     
   81.000000000000000     
   104.03999999999999     

但是,使用
f2py.py-c-m itimes-s.f运行f2py会产生大量错误。(由于篇幅原因未发布,但如果有人需要,我可以发布)

我从未尝试过使用f2py包装完整的Fortran模块。但是,如果您将
itimes
函数从模块提取到它自己的文件中,然后运行相同的
f2py
命令,那么当我在本地尝试它时,一切似乎都正常工作(f2py v2、numpy 1.6.1、python 2.7.2、gfortran 4.1.2)


另外,请注意,您没有明确关闭输入和输出文件,尽管这与f2py的工作与否没有实际关系。

请发布示例。在那之后,给出任何建议都会容易得多。您可以将具有相同问题的子例程减少到最小值,然后将其发布到此处。@steabert和Idigas,很抱歉延迟,请参见上面的示例。因为python模块的名称必须与Fortran模块的名称不同。然后您将拥有pythonmodule.fortranmodule.yourfunction
1
2
3
4
5
6
7
8
9
10.2
   1.0000000000000000     
   4.0000000000000000     
   9.0000000000000000     
   16.000000000000000     
   25.000000000000000     
   36.000000000000000     
   49.000000000000000     
   64.000000000000000     
   81.000000000000000     
   104.03999999999999