Доступ к файлам в подкаталоге основной программы

Папка, содержащая мой основной исполняемый файл, очень загромождена входными, выходными и исходными файлами. Я хотел бы переместить некоторые из этих файлов в другой каталог для моего исполняемого файла, но при этом иметь к ним доступ. Было бы здорово, если бы я мог создать каталог, например ./main/outfile, в котором будут храниться все выходные файлы моей программы. Можно ли указать путь при доступе к этим файлам в Fortran 77/90?

Если компиляторы имеют какое-то значение, я использую gfortran, который работает на Ubuntu 11.10.


person kxk7607    schedule 05.03.2012    source источник


Ответы (2)


для входных/выходных файлов просто укажите путь при открытии файла. Например:

open(unit=3,file='outputdata/data_modified.txt',status='unknown')

откроет файл в папке outputdata. Обратите внимание, что папка outputdata должна существовать заранее, иначе вы, скорее всего, получите сообщение об ошибке.

person bananafish    schedule 05.03.2012
comment
Вы должны подчеркнуть, что каталог outputdata должен существовать до вызова этой команды. По крайней мере, с ifort, если я попытаюсь записать файл в несуществующий каталог, я получу ошибку «Файл не найден». - person Chris; 06.03.2012
comment
Как насчет операторов for include в конце MAIN? Я не думаю, что «включить» принимает ввод пути. У меня очень длинный список операторов включения, что означает, что у меня есть много включенных файлов, загромождающих тот же каталог, в котором находится мой MAIN. Должен ли я просто скопировать и вставить все эти подпрограммы в один файл .f, чтобы включить в конце программы? - person kxk7607; 06.03.2012
comment
@ kxk7607 Нет, не делай этого. Тот же метод пути будет работать и для включаемых файлов. Вы можете поместить включаемый файл в папку includefiles и указать его в своей основной программе с помощью include includefiles/statements.inc. - person bananafish; 06.03.2012
comment
@bananafish Я не знаком с включаемым файлом (расширение .inc). Организует ли это все нужные файлы в один оператор? Было бы здорово, если бы я мог указать на каталог и включить все файлы с помощью in. Это то, что делает файл .inc? - person kxk7607; 07.03.2012
comment
@ kxk7607 нет, .inc - это просто произвольное расширение, это может быть любой файл, содержащий код фортрана, действительный в той точке вашей программы, в которой вы его вызываете. Вы включаете различные функции/подпрограммы таким образом? если это так, я бы подумал о том, чтобы поместить их кучу в один и тот же модуль (в один и тот же файл). и use модуль в основной программе. - person bananafish; 09.03.2012

Начальный каталог во время выполнения — это не каталог, в котором находится ваша основная программа, а текущий каталог при запуске программы.

Например

mkdir run_N && cd run_N && ../my_program

Будет читать и записывать файлы в текущем каталоге (./run_N), даже если двоичный файл приложения находится в другом каталоге.

person janneb    schedule 05.03.2012
comment
У меня сложилось впечатление, что MAIN генерирует a.out (или какой-то другой указанный исполняемый файл вывода), который создается в том же каталоге, что и MAIN. Я так понимаю, что перемещение a.out, скажем, на рабочий стол, не позволит программе работать должным образом? Простите меня, я все еще в зачаточном состоянии FORTRAN. - person kxk7607; 06.03.2012