file_lines()函数有问题吗?

时间:2011-06-10 18:08:29

标签: idl-programming-language

我在IDL中遇到file_lines()函数问题。我有一个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)

关于可能出错的任何建议?

1 个答案:

答案 0 :(得分:0)

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