停止在CSV文件末尾写入空白行(使用MATLAB)

时间:2010-05-18 15:06:26

标签: matlab file-io csv

我正在使用MATLAB打开一批包含列标题和数据的CSV文件(使用importdata函数),然后我稍微操纵数据并使用以下方法将标题和数据写入新的CSV文件dlmwrite功能。我使用-append的{​​{1}}和newline属性在新行上添加每行文本/数据。

我的每个新CSV文件末尾都有一个空白行,而当我读入数据时,此空行不存在...而且我最后一次调用时没有使用dlmwrite newline

是否有人知道如何将此空白行写入我的CSV文件末尾?


EDITED 5/18/10 1:35 PM CST

添加了有关每个请求的代码和文本文件的信息...在执行下面的过程后,您会注意到新文本文件中最后一行的末尾似乎有回车符。

考虑一个名为'textfile.txt'的文本文件,如下所示:

dlmwrite

以下是我正在使用的代码示例:

Column1, Column2, Column3, Column4, Column 5
1, 2, 3, 4, 5
1, 2, 3, 4, 5
1, 2, 3, 4, 5
1, 2, 3, 4, 5
1, 2, 3, 4, 5

1 个答案:

答案 0 :(得分:3)

如果未在DLMWRITE中指定“newline”选项,则MATLAB使用UNIX样式的行尾字符(LF,十六进制代码中的\ x0A),即使在Windows机器上也是如此。但无论如何它确实放了新线。

如果你指定'newline','pc',它会把DOS行尾字符(CRLF,\ x0D0A用十六进制代码)。

记事本只能理解DOS行尾。写字板理解两者。至少它在我的机器上是怎么回事。

我建议您保持一致,并对所有行使用相同的“换行符”选项。这样你也可以避免for循环。然后尝试在MATLAB编辑器中打开输出文件。

为什么你根本不想要行尾字符呢?如果这是您所需要的,请使用FPRINTF功能。要做到这一点,你必须先用FOPEN打开文件。重写输出的整个代码可能会更好。

这样的事情:

fid = fopen('textfile_updated.txt','w');
fprintf(fid,'%s\r\n',columnHeaders); %# \r\n for PC end-of-line
fprintf(fid,[repmat('%d,',1,size(importedData.data,2)-1) '%d\r\n'],importedData.data(1:end-1,:)');
fprintf(fid,[repmat('%d,',1,size(importedData.data,2)-1) '%d'],importedData.data(end,:));
fclose(fid);