我在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)
关于可能出错的任何建议?
答案 0 :(得分:0)
您的代码在我的linux系统上按预期工作,无论行长度如何,都可以获得27000行输入文件。可能你的文件有非ascii字符代码:如果你在一个小的二进制文件上运行你的file_lines函数,比如/bin/bash
,你会得到与grep -c "." /bin/bash
甚至wc -l /bin/bash
不同的答案。