【问题标题】:Writing specific lines from one txt file to another using Matlab使用 Matlab 将特定行从一个 txt 文件写入另一个文件
【发布时间】:2014-06-27 01:06:21
【问题描述】:

给定一个 for 循环,我想使用 Matlab 将特定行从一个文本文件写入另一个文本文件。我见过的解决方案提到将文本文件放入数组/矩阵并逐行写入和逐行读取(而我想读取特定行)但它们重新格式化数据(例如,将 ' ' 添加到字符串和[] 到整数)。下面是代码的模糊概念: textFile & otherTextFile = 我要写入的文件,data = txt 文件特定行中的所有内容,i = 文本文件的行。

for i = 1:100
    if i < 15
        fprintf(textFile, data);
    else
        fprintf(otherTextFile, data);
    end
end

提前非常感谢!

编辑:我不太清楚,但我的实际代码需要它从几个不同的特定部分编写,例如。第 1-15、60-70 行复制到一个文件,其他行复制到另一个文件。使用下面接受的答案,您只需使用该确切实现并将 fprintf 语句放在您的 if/elseif/else 语句之间。

【问题讨论】:

  • 那么,您希望源文本文件的前 14 行在一个文件中,接下来的 86 行在另一个文件中?
  • 在我的实际代码中,我试图将第 1-15 行和第 66-90 行复制到一个文件中,将其他行复制到第二个文件中。
  • 用这些条件修改你的问题,我会改变我的答案。

标签: matlab for-loop text


【解决方案1】:

文本文件是一个字节流,这意味着文本文件中没有存储明确的信息,即“行号 nthat 位置开始”。因此,一旦文件打开,第一个读取行是第一个,第二个读取行是第二个,依此类推。

一些代码来说明:

% Some named numbers
N_LINES  = 100
N_SWITCH = 15

% Open files
fin   = fopen('inputfile.txt', 'r');
fout1 = fopen('outfile1.txt', 'w');
fout2 = fopen('outfile2.txt', 'w');

% Split lines between the 2 files
for i = 1:N_LINES
        % Read input
        data = fgets(fin);
        if feof(fin)
                break;
        end;

        % Write output
        if i < N_SWITCH
                fprintf(fout1, '%s', data);
        else
                fprintf(fout2, '%s', data);
        end;
end;

% Close files
fclose(fin);
fclose(fout1);
fclose(fout2);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-03
    • 2016-06-18
    • 2015-02-02
    • 1970-01-01
    • 2021-02-06
    相关资源
    最近更新 更多