0

file_lines()IDLの機能に問題があります。emacsバッファ内でコマンドを使用して確認したように、27000行のASCIIデータファイルがあります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

あなたのコードは、行の長さに関係なく、27000行の入力ファイルに対して私のLinuxシステムで期待どおりに機能します。おそらく、あなたのファイルにはASCII以外の文字コードが含まれています.file_lines関数を小さなバイナリファイルで実行すると、/bin/bashたとえば.grep -c "." /bin/bashwc -l /bin/bash

于 2011-06-10T20:11:44.410 に答える