2014-08-28 118 views
0

我有一个正在移动到IaaS的Fortran exe文件。从控制台(Windows)中运行时,FORTAN exe文件运行正常,但是当我打电话的exe从瓶RESTserver(本地)的文件路径不工作,在我收到以下错误:open() - Fortran运行时错误:当使用Python/Bottle运行exe文件时,文件'不存在

At line 79 of file MainCalculator.f90 (unit = 61, file = '└') 
Fortran runtime error: File '' does not exist 

这里是我的Python /瓶代码以执行该Fortran的:

def model(): 
    curr_dir = os.path.dirname(os.path.realpath(__file__)) 
    exe = "Calculator.exe" 
    path = os.path.join(curr_dir, 'bin', 'fortan_model', 'Debug', exe) 
    a = subprocess.Popen(path, shell=False) 
    a.wait() 

下面是代码抛出Fortran中错误的行:

open(UNIT=61, FILE=trim(adjustl(recipePath))//"Scenarios.txt") 

其中,recipePath = '..\..\ourRecipes\OUR_recipes_082014\'(在另一个.F90文件中定义)

看来文件路径被报告为ASCII值(文件=“└”),当该exe从命令行运行不发生。我认为这可能是相对路径,但它给绝对路径的错误,但与file = '≡f*☺└'

它还创建一个文件名' Scenarios.txt'(与前面的空格)。

编辑:Fortran .exe读取输入的txt文件。每一行都被分配给一个变量。这从命令行按照预期工作,但是当从Bottle执行时,它将输入文件解析为空白字符。我是否需要授予Python读取文件的权限和/或打开内存中的输入文件?

+0

尝试在'open'语句之前打印'recipePath'的内容。如果它包含一些奇怪的东西,请尝试找出原因。确保启用所有运行时检查和警告。 ('-fcheck = all')。 – 2014-08-28 15:28:07

+0

我无法在Bottle控制台窗口中打印Fortran写入(*,*)语句,而我可以从Bottle Python脚本打印。 write(*,*)语句显示何时运行命令行,而不是通过Bottle脚本执行时 – Flash 2014-08-28 15:39:43

+0

将它写入文件,或者使用调试器或其他。 – 2014-08-28 16:00:32

回答

0

我有一个类似的问题。

我通过减小输出文件名的大小解决了这个问题。

相关问题