0

file_lines()在 IDL 中遇到了函数问题。我有一个 ASCII 数据文件,它有 27000 行,正如我在 emacs 缓冲区中并使用命令验证的那样grep -c ".";但是,file_lines()返回值 81807 行。该功能等效于此代码(http://idlastro.gsfc.nasa.gov/idl_html_help/FILE_LINES.html)

FUNCTION file_lines, filename  
   OPENR, unit, filename, /GET_LUN  
   str = ''  
   count = 0ll  
   WHILE ~ EOF(unit) DO BEGIN  
      READF, unit, str  
      count = count + 1  
   ENDWHILE  
   FREE_LUN, unit  
   RETURN, count  
END

我的第一直觉是,我相当长的行(最多 231 个字符)被截断以限制 IDL 字符串变量的字符数,但这似乎并非如此,因为 IDL 字符串据说可以容纳 2147483647(2.1 GB) 字符长度 (http://idlastro.gsfc.nasa.gov/idl_html_help/Overview_of_Strings.html)

关于可能出现什么问题的任何建议?

4

1 回答 1

0

无论行长如何,您的代码都可以在我的 linux 系统上按预期工作,输入 27000 行的文件。可能你的文件有非 ascii 字符代码:如果你在一个小的二进制文件上运行你的 file_lines 函数,比如说/bin/bash,你得到的答案与 with grep -c "." /bin/bash,甚至wc -l /bin/bash.

于 2011-06-10T20:11:44.410 回答