【问题标题】:Count the number of lines in text files in a folder and sum the number of the total lines using MATLAB [closed]计算文件夹中文本文件的行数并使用 MATLAB 计算总行数 [关闭]
【发布时间】:2013-04-19 12:34:12
【问题描述】:

我想读取 MATLAB 中一个文件夹中的一些文本文件,计算每个文件中的行数,最后将这些数字相加。如果有人指导我如何在 MATLAB 中进行操作,我将不胜感激?

【问题讨论】:

    标签: matlab text file-io count


    【解决方案1】:

    【讨论】:

      【解决方案2】:

      Matlab 真的不适合那个。底层操作系统通常在这方面做得更好,所以使用系统调用。

      this question 改写我原来的答案(从那以后我学到了一些新技巧:)

      if (isunix) %# Linux, mac    
          [~, result] = system('wc -l *');    
          numLines = cellfun(@str2double, regexp(result, '([0-9]+) total', 'tokens'))
      
      elseif (ispc) %# Windows       
          [~, result] = system('find /v /c "&*fake&*" *.*');    
          numLines = sum(str2double( regexp(result, '[0-9]+', 'match') ))
      
      else %# Some smaller OS
          error('Unsupported operating system.');
      
      end
      

      请注意,这将正常工作,除了

      • 如果你在 Linux/max 上并且在当前目录中有一个名为 total 的文件:)
      • Windows 版本有时会误数一些文件 1 或 2 行,我不知道为什么...

      我很确定有一个更简洁的单行解决方案来解析 linux 结果字符串;当前的混乱是由于regexp(..., 'tokens') 返回了一个 cell of cells,这对于当前上下文非常不方便(老实说,我没有找到很多它 的上下文> 方便),所以这必须由cellfun 解决。

      但是,好吧,它认为在大多数情况下它应该可以解决问题。

      【讨论】:

      • 阅读find /?的帮助,我认为它会误算的原因是如果文件中出现“假”字符串的事情..
      • 您总是可以在 Windows 上获得wc 的端口:Cygwin、MSYS/MinGW、GnuWin32UnxUtils..
      • @Amro:没错,但我想要一个无需安装任何外部工具即可工作的解决方案。
      • @Amro: 啊,那可能是真的 :) 傻我
      猜你喜欢
      • 2019-08-12
      • 1970-01-01
      • 2011-03-29
      • 2017-12-25
      • 1970-01-01
      • 1970-01-01
      • 2016-10-28
      • 1970-01-01
      相关资源
      最近更新 更多