2016-06-16 3 views
0

내 질문 : 코드의 나중에 파일에 쓰기 위해 .m 파일의 상태를 변수로 저장할 수 있습니까?.m 파일의 현재 상태 저장, 나중에 파일에 쓰기 (Matlab)

source_file  = mfilename('fullpath'); 
write_path  = '~/data'; 

(code that takes many minutes to execute) 

copyfile([source_file,'.m'],[write_path,'/source_file.m']); 

문제는 분 코드 실행의 시간 동안, 내가 원래하는 .m 코드에 많은 수정을 것이다 :

현재, 나는이 라인을 가지고있다. copyfile이 파일의 끝에 호출되면 실행 된 코드 대신 수정 된 코드가 저장됩니다. 물론 코드의 대부분 앞에 copyfile을 호출 할 수 있다는 것을 알고 있지만 그렇게하지 않는 것이 좋습니다.

답변

2

메모리에로드 된 파일은 여전히 ​​원본 파일이지만 디스크의 파일은 이제 수정 된 파일입니다. 최선의 방법은 코드 시작 부분에 copyfile으로 전화하는 것입니다 (이 작업을 수행 할 수없는 이유는 확실하지 않음). 어떤 이유로 든 그렇게 할 수 없다면 fread을 사용하여 소스 코드를 읽은 다음 스크립트가 완료된 후 으로 다른 파일에 쓸 수 있습니다.

fid = fopen(source_file, 'r'); 
source_code = fread(fid); 
fclose(fid); 

% Do stuff 

fout = fopen(fullfile(write_path, 'source_file.m'), 'w'); 
fwrite(fout, source_code); 
fclose(fout)