【问题标题】:Saving file with part of file name and date使用部分文件名和日期保存文件
【发布时间】:2012-07-26 15:04:13
【问题描述】:

您好,我目前正在尝试找到一种方法将 2 个变量从我的工作区保存到一个文件中。我希望使用原始日期和当前日期将文件名放在一起。

我只想要变量的最大值,所以:

max(streaking)

max(tap_total)

原文件名是:

3_FM001_02_05460$BandP$64_24000_FWD_1x1_PRI_PRI_PRI_PRI_15_17_ActivePixelMeans.csv

我想使用的原始文件名的唯一部分是:

3_FM001_02_05460$BandP$64_24000_FWD_1x1

这些可以保存在文本文件或电子表格中,没关系。

新文件名的示例如下:

3_FM001_02_05460$BandP$64_24000_FWD_1x1_7-26-2012

还有,

如果可以在文件中做点什么来显示哪个变量是哪个,例如:

Streaking: 1.272  % this would come from the variable max(streaking)

Tap_Total: 2.252  % this would come from the varaible max(tap_total)

编辑:

% Construct a questdlg with three options

choice = questdlg('Would you like to save?', ...

'Save Options', ...

'Yes','No','Cancel','Cancel');

% Handle response

switch choice

case 'Yes'

    disp([choice ' processing.'])

    save_option = 1;
case 'No'
    disp([choice ' processing.'])
    save_option = 0;
case 'Cancel'
    disp('Canceled.')
    save_option = 2;
end

file_to_get = evalin( 'base', 'file_to_get' );
streaking = evalin( 'base', 'streaking' );
tap_total = evalin( 'base', 'tap_total' );

if save_option == 0
elseif save_option == 1

    max_streak = max(streaking);
    max_tap = max(tap_total);
    str_streak = mat2str(max_streak);
    str_tap = mat2str(max_tap);
    fname = file_to_get;
    pruned_fname = regexprep(fname,'_PRI(\w*).(\w*)','');
    new_fname = [pruned_fname '_' date '.csv'];
    path1 = '\\pfile01thn\bbruffey$\My Documents\analysis data\Banding and Streaking Results';
    fid = fopen([path1 new_fname], 'w');
    fprintf(fid,['Max Banding: %s\nMax Streaking: %s'],str_tap,str_streak)
    fclose(fid);
elseif save_option == 2
end

【问题讨论】:

    标签: matlab date file-io save filenames


    【解决方案1】:

    这将是使用regexprep 命令删除原始文件名的好地方。

    例子:

    fname = '3_FM001_02_05460$BandP$64_24000_FWD_1x1_PRI_PRI_PRI_PRI_15_17_ActivePixelMeans.csv';
    pruned_fname = regexprep(fname,'_PRI(\w*).(\w*)','');
    
    pruned_fname =
    
    3_FM001_02_05460$BandP$64_24000_FWD_1x1
    

    现在,关于我在这里使用的regexprep 命令的注释。这特定于您在此处提供的文件名。因为看起来您想在第一个 _PRI 之后修剪所有内容,所以我使用了标签 (\w*),这意味着可以跟随 [a-z A-Z _ 0-9] 的任何组合。请注意,因为这是一个文件名,所以有一个.,因此我在其中添加了一个句点,然后加上另一个(\w*) 来完成csv。你可以在here找到更多关于这类操作符的信息。

    现在你有了pruned_fname,你可以简单地添加任何你想要的东西。因此,如果您想在空格中添加带有下划线的日期,只需执行以下操作:

    new_fname = [pruned_fname '_' date '.csv'];
    new_fname =
    
    3_FM001_02_05460$BandP$64_24000_FWD_1x1csv_26-Jul-2012.csv
    

    现在您只需打开文件即可对其进行写入。您可能需要将路径附加到要保存的位置,我现在将其称为path。类似于C:\Documents\

    fid = fopen([path new_fname], 'w')
    

    现在有了fid,您就有了要写入的文件的ID。这应该是一个新文件,如果不是这样,您将覆盖文件内容。请注意 =)

    接下来,您可以使用 fwrite fprintf 将前两行简单地写入文件,仅举几个可能的函数。

    希望这会让你在那里设置!

    【讨论】:

    • 好的,所以我只是使用我正在创建的工作区变量“file_to_get”来补充 fname。这工作得很好。它正在完美地创建新文件名。它只是告诉我,当我在的时候,我需要使用 fopen。我添加了我认为正确的路径。这是在尝试使用 fprintf 时。当我尝试使用 fwrite 时,它​​没有保存任何内容,但没有给出错误。
    • 如果您用fwritefprintf 的使用方式更新您的问题,我可能会提供更好的帮助。只需举例说明您如何尝试在原始问题末尾提到的两行信息中写入。你可能不会太远。
    • 查看我的编辑,我正在尝试使用选项框提示用户是否要保存。
    • 您只需在路径末尾添加另一个\ (slash)。然后它应该保存到您想要的位置。所以它看起来像这样:path1 = '\\pfile01thn\bbruffey$\My Documents\analysis data\Banding and Streaking Results\'
    • 啊,说得有道理,这么小的小事要看看哈哈,再次感谢
    猜你喜欢
    • 2017-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-08
    • 1970-01-01
    • 2018-01-12
    相关资源
    最近更新 更多