2013-04-30 12 views
0

我在Matlab中遇到以下問題。 我打開現有文件這一行:Matlab - 使用現有文件中文件名的一部分來命名新文件

fileID = fopen(filename,'r'); 

我然後創建一個新的文件,這一行:

fid=fopen('output.txt','w'); 

這工作得很好。問題是,我不希望它被稱爲「輸出」。我想使用原始文件名稱並添加一些字符串來調用它,如下所示:「filename_new.txt」。輸出文件也必須是.txt文件,無論原始文件是什麼。 我知道我可以利用這個得到原始文件的名稱爲字符串:

[pathstr, name, ext] = fileparts(filename) 

,但我不知道從哪裏裏去。 所以總結一下,新文件應該叫做「name_new.txt」。 我有一種感覺,這對你們來說可能是微不足道的,或者你會告訴我這種方式實際上並不可行。無論哪種方式,我會很感激任何幫助。

+1

使用你的'fileparts'功能,我會建議只是'outName = [name'_new.txt']''fid = fopen(outName,'w')'這將處理除3個字母以外的文件類型的擴展名。 – DaveH 2013-04-30 19:58:26

回答

1

你可以試試這個:

filename_out = [filename(1:end-4),'_new.txt']; 
fid=fopen(filename_out,'w'); 

filename(1:end-4)是一個快速簡便的方法來去除.txt結局。如果你知道它全部是txt文件,這應該就足夠了。
隨着[]你可以結合這兩個字符串,在這種情況下追加一個_new.txt

+0

令人驚歎,像魅力一樣工作。先生非常感謝您! – 2013-04-30 19:54:43

0
%% Rename whole *copy.png -> .png by JYJ 

root_dir = '/Users/Yoojeong/Desktop/stims/png'; 

%retrieve the name of the files only 
listdir = dir(fullfile(root_dir, '*.png')); 

% i = 1; 
    for i = 1:length(listdir) 
[pathname, filename, extention] = fileparts(listdir(i).name); 

%the new name 
newFilename = [filename(1:end-5),'.png']; 
movefile(fullfile(root_dir, listdir(i).name), fullfile(root_dir,newFilename)) 
    end 
+0

通過一些解釋性文字圍繞您的答案可以改善它。 – zx485 2016-11-05 13:06:21

相關問題