У меня есть Fortran exe, который переносится на IaaS. Fortan exe работает нормально при запуске из консоли (Windows), но когда я вызываю exe из Bottle RESTserver (локально), пути к файлам не работают, и я получаю следующую ошибку:
At line 79 of file MainCalculator.f90 (unit = 61, file = '└')
Fortran runtime error: File '' does not exist
Вот мой код Python/Bottle для выполнения 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 (file = '└'), чего не происходит, когда exe запускается из командной строки. Я думал, что это могут быть относительные пути, но выдает ту же ошибку с абсолютными путями, но с file = '≡f*☺└'
.
Он также создает имя файла ' Scenarios.txt'
(с пробелами впереди).
РЕДАКТИРОВАТЬ: Fortran .exe читает входной текстовый файл. Каждая строка присваивается переменной. Это работает, как и предполагалось, из командной строки, но при выполнении из Bottle анализирует входной файл как пустые символы. Нужно ли предоставлять Python разрешение на чтение файла и/или открытие входного файла в памяти?
recipePath
перед операторомopen
. Если он содержит что-то странное, попытайтесь выяснить, почему. Обязательно включите все проверки и предупреждения во время выполнения. (-fcheck=all
). - person Vladimir F   schedule 28.08.2014