Matlab dir('*.txt') 命令未按顺序列出 txt 文件

Matlab dir('*.txt') command is not listing txt files in order

我正在 MATLAB 中使用 dir('*.txt') 从文件夹中读取文本文件。文本文件被命名为 0, 4, 8, 12, ..180.txt。先是dirreturns0,然后是100,然后是104等等。为什么会这样?

如果您对文件的顺序很敏感并且您已经知道它们的名字,您根本不必使用dir:

for ii=0:4:180
    filename = sprintf('%d.txt', ii);
    fid = fopen( fullfile('/path/to', filename), 'r' );
    % ... do the processing here
    fclose(fid);
end

Lexicographical ordering 通过仅查看做出决定所需的信息来工作。在我们的例子中,信息是文件名中字符的 ASCII 值。考虑以下示例:

  • 如果我们有两个文件名10.txt2.txt,列表机制将比较这些文件的第1st字符,即 12,并将 return 取最小者,在这种情况下是属于 10.txt1

  • 如果我们有 2.txt20.txt,则第一个字符相同,因此将比较下一个字符,即 .0。这里,由于 . 的 ASCII 值是 460 的 ASCII 值是 48,因此 2.txt 将首先被 returned。

您可以通过始终使用文件名所需的最大位数来解决此问题,这意味着:

0.txt    -->  000.txt
4.txt    -->  004.txt
25.txt   -->  025.txt
180.txt  -->  180.txt

然后文件将return按预期顺序编辑。