J'aimerais savoir s'il est possible d'utiliser une seule commande (avec des options/des spécificateurs) pour Fortran:
ouvre un fichier s'il existe et ajoute des données .__ (ceci peut être fait avec: open(unit=40,file='data.data',Access = 'append',Status='old')
mais si le fichier n'existe pas, une erreur d'exécution est générée)
créez le fichier s'il n'existe pas et écrivez des données.
J'utilise actuellement inquire
pour vérifier si le fichier existe ou non, mais je dois encore utiliser l'instruction open
pour ajouter ou écrire des données.
Autant que je sache, la seule solution safe consiste à procéder comme vous le faites déjà, en utilisant différentes instructions open
pour les différents cas:
program proba
implicit none
logical :: exist
inquire(file="test.txt", exist=exist)
if (exist) then
open(12, file="test.txt", status="old", position="append", action="write")
else
open(12, file="test.txt", status="new", action="write")
end if
write(12, *) "SOME TEXT"
close(12)
end program proba
Vous pouvez être intéressé par ma bibliothèque Fortran d’interface vers les appels système de fichiers libc (modFileSys) , qui pourrait au moins vous épargner la variable logique et l’instruction inquire
en interrogeant directement l’état du fichier:
if (file_exists("test.txt")) then
...
else
...
end if
mais bien sûr, vous pouvez facilement programmer vous-même une fonction similaire, et surtout cela ne vous épargnera pas des deux déclarations open
...
open(61,file='data.txt',action='write',position='append')
write(61,*) 'hey'
close(61)
Cela va ajouter à un fichier existant, sinon créer et écrire. Ajouter status='unknown'
serait équivalent.
si vous remplacez le statut «ancien» par «inconnu», vous n'obtiendrez pas l'erreur d'exécution si le fichier existe ou maintenant.
Merci
Dans l'instruction open, ajoutez l'attribut access
comme suit:
Open(unit=031,file='filename.dat',form='formatted',status='unknown',access='append')
L'instruction ci-dessus ouvrira le fichier sans détruire les anciennes données et la commande write ajoutera les nouvelles lignes du fichier . La solution la plus simple pour fortran 90.