2016-05-18 32 views
1

Okey、私はJuliaの配列テキストファイル(通常の表形式のテキストファイル)に保存されているいくつかの点をプロットしたいと思います。ファイルが空でない場合は、単純な data=readdlm("FileInCase01.dat")で値を取得できます。ファイルが空の場合は、data=[]、空の配列と空のプロットが必要です。ファイルは常に存在します。だからisfileは役に立たない。しかし時にはそれは空です。空のファイルにreaddlmを使用しようとすると、エラーが返されます。 LoadError: at row 0, column 0 : ArgumentError("number of rows in dims must be > 0, got 0") while loading In[21], in expression starting on line 2 これは、readdlmが空の配列を返すことができないことを示しています。したがって、ファイルが空であるかどうかを事前に確認する必要があります。どうしたらいいの?Juliaでファイルが空であるかどうかを確認するには?

+2

'try'と' catch'を使うのはどうですか?これらは、ユーザーが関数からこれらの種類の回復不能なエラーを正確にキャッチして、アプリケーションに固有の何かを行うことができるようになっています(完全な例はdocsやrequestによって与えられます)。 –

答えて

5

あなたはfilesizeでファイルサイズを確認することができます。

shell> cat test.csv 
# 

julia> filesize("test.csv") 
2 

ファイルサイズは空のファイルに対して0になります。しかし、気を付ける:「のtest.CSVは」空ではないにもかかわらず、それが唯一のコメント文字が含まれているのでreaddlmはまだエラーがスローされます。

julia> readdlm("test.csv") 
ERROR: at row 0, column 0 : ArgumentError("number of rows in dims must be > 0, got 0") 

try/catchブロックのためのDanGetzの提案は、おそらくあるので@ここで失敗を処理するより堅牢な方法。

関連する問題