質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

保存

保存(save)とは、特定のファイルを、ハードディスク等の外部記憶装置に記録する行為を指します。

FORTRAN

FORTRAN(フォートラン)は科学時術計算に向いた手続き型プログラミング言語です。 並列計算の最適化が行いやすい特性上、数値予報および気候モデルなどの大規模な計算を行う分野のスーパーコンピュータで使われています。

受付中

fortranプログラムで処理した連番ファイルを別のフォルダに保存したい。

fordo
fordo

総合スコア2

ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

保存

保存(save)とは、特定のファイルを、ハードディスク等の外部記憶装置に記録する行為を指します。

FORTRAN

FORTRAN(フォートラン)は科学時術計算に向いた手続き型プログラミング言語です。 並列計算の最適化が行いやすい特性上、数値予報および気候モデルなどの大規模な計算を行う分野のスーパーコンピュータで使われています。

2回答

0グッド

0クリップ

2917閲覧

投稿2021/05/04 10:30

編集2021/05/04 12:03

fortranプログラムで処理した連番ファイルを別のフォルダに保存したい。

作業フォルダ内の、行列が書かれた連番のテキストファイルの要素の値を、
閾値以上は255、それ以下は0に変え、作業フォルダ内の新しいフォルダに同名の出力ファイルを作成して書きこむシステムをfortranで作っています。

作業フォルダには'abcde_xxx.bw.txt'という名前の入力ファイルが複数入っており、
xxxのところに001~の連番が入ります。それ以外の部分は全て共通です。

そのファイルを読み込みIF文で処理したうえで、
同名のファイルを新しいフォルダに作成し、内容を保存したいと思っております。

出力ファイルの保存先パスを、別のフォルダに指定する機能を実装中に以下のエラーメッセージが発生しました。

write (filename, "(a,'_',i3.3,'bw.txt')")trim(dataname),i !連番ファイル名の生成 open(11, file='./新しいフォルダー/' trim(filename), status='new')

ソースコードの後半部分ででこのようにして出力ファイルを開き、
その保存先のパスを、作業フォルダ内の”新しいフォルダー”に設定したいのですが、
すると下のようなエラーが出てしまいます。

C:\Users\Downloads\2 3500fps\binarization_for_txt.f90:68:38: 68 | open(11, file='./新しいフォルダー/' trim(filename), status='new') | 1 Error: Syntax error in OPEN statement at (1)
file='./新しいフォルダー/trim(filename)'

のようにするとエラーは出ませんが、trim(filename)がただの文字列と認識されてしまうので,trim(filename).txtというファイルが作成され、プログラムが終了してしまいます。
解決方法など、分かる方がいたらよろしくお願いいたします。

該当のソースコード

Fortran

1program main 2 3implicit none 4 5character*30 filename !txtファイルの名前 6character*30 dataname !txtファイルの名前の拡張子,連番を除いた部分 7character*30 fname 8character*1 dummy 9 10integer :: i,j,k !繰り返し変数 11integer, dimension(1,800):: pix1 !txtファイルの1行目 12integer, dimension(800,800):: pix !txtファイルの2行目以降 13integer :: thr !2値化の際の閾値 14integer :: Nmax !txtファイルの数 15 16 17 18 19 20 21 print*,"input condition name. ex)1o10C334000_1" 22 read*, dataname 23 24 25 print*,"input the number of txt_file" 26 read*, Nmax 27 28 print*,"What is the threshold?" 29 read*, thr 30 31 32 33 do i=0, Nmax 34 35 write (filename, "(a,'_',i3.3,'bw.txt')")trim(dataname),i 36 37 38 open(10, file=trim(filename), status='old') 39 print*, trim(filename) 40 41 42 43 44 do j=1,1 45 read(10,*) (pix1(j,k), k=1,768) !入力ファイルの1行目を配列に格納 46 end do 47 48 do j=1,768 49 read(10,*) (pix(j,k), k=1,769)   !同2行目以降を配列に格納 50 end do 51 52 53 do j=1,768 54 do k=2,769 55 56 if (pix(j,k)<thr) then !2値化の処理 57 pix(j,k)=0 58 else 59 pix(j,k)=255 60 end if 61 62 end do 63 end do 64 65 66 !write (fname, "(i3.3,'bw.txt')")i 67 write (filename, "(a,'_',i3.3,'bw.txt')")trim(dataname),i 68 open(11, file='./新しいフォルダー/' trim(filename), status='new') 69 70 71 do j=1,1 72 write(11, '(*(i3,1x))') (pix1(j,k), k=1,768) 73 end do 74 75 do j=1,768 76 write(11, '(*(i3,1x))') (pix(j,k), k=1,769) 77 end do 78 79 close(11) 80 81 close(10) 82 83 84 end do !'i' 85 86 end 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

回答2

0

文字列連結をしてもいいですし、ファイル名を生成する所で、ディレクトリ名もくっつておく手もあります。

fortran

1 write (filename, "(2a,'_',i3.3,'bw.txt')")'./新しいフォルダー/',trim(dataname), i

投稿2021/05/04 11:42

curehoney

総合スコア249

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

0

Fortranで、文字列を連結するのは、//という二項演算子です。

投稿2021/05/04 11:27

otn

総合スコア80401

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

保存

保存(save)とは、特定のファイルを、ハードディスク等の外部記憶装置に記録する行為を指します。

FORTRAN

FORTRAN(フォートラン)は科学時術計算に向いた手続き型プログラミング言語です。 並列計算の最適化が行いやすい特性上、数値予報および気候モデルなどの大規模な計算を行う分野のスーパーコンピュータで使われています。