追加現有的文件是否有可能將其追加數據之前刪除的文件嗎?寫的方式覆蓋或用Fortran
OPEN(61,file="file.txt",action='write',position='append')
WRITE(61,*)f(i,j)
CLOSE(61)
這將創建file.txt並在其中附加值f(i,j)。整個設置在裏面做循環。但是如果我下次運行相同的代碼,它會從之前寫入的最後一個值開始追加。 我想徹底刪除該文件內容它開始追加每次運行時的數據之前。可能嗎?
下面是一個簡單的測試程序:
program test
double precision f
dimension f(10,10,10)
integer i,j,k
character*500 ofile
Do k=1,5
do i=1,2
do j=1,2
f(i,j,k)= i+10d0*j+k
WRITE(ofile,'(A,F4.2,A,F4.2,A)')'file',i*1d0,'_',j*1d0,'.dat'
OPEN(61,file=ofile,action='write',position='append')
WRITE(61,*)k,f(i,j,k)
enddo
enddo
enddo
CLOSE(61)
stop
end
在第一次運行的輸出cat file1.00_1.00.dat
:
1 12.000000000000000
2 13.000000000000000
3 14.000000000000000
4 15.000000000000000
5 16.000000000000000
在第二輪開始向最後再次cat file1.00_1.00.dat
附加:
1 12.000000000000000
2 13.000000000000000
3 14.000000000000000
4 15.000000000000000
5 16.000000000000000
1 12.000000000000000
2 13.000000000000000
3 14.000000000000000
4 15.000000000000000
5 16.000000000000000
我想避免第二種情況。每次我運行,它應該給沒有運行之前刪除的文件,
1 12.000000000000000
2 13.000000000000000
3 14.000000000000000
4 15.000000000000000
5 16.000000000000000
注:我必須打開裏面的文件做環路格式文件名以做循環語法。 一個簡單的解決方案是在運行之前每次移除所有輸出文件。
你的意思是_replace_?但是你也可以在開始時定位,所以你需要選擇'append'嗎? – francescalus
只是刪除'position ='append'',默認是覆蓋。 – agentp
@francescalus追加的原因是在同一個文件中寫入所有f(i,j)與do循環i,j繼續。基本上我想停止代碼並再次運行,然後它應該寫入去除之前寫入的所有內容。 –