私は.tar.gzファイルのリストをループし、untarして分析します。ここまでは順調ですね。問題は、一部のファイルが壊れている場合、untar
がエラーをスローし、処理が停止することです。tarからエラーをキャッチして処理を続行します。
私のコードは、そのようなものです:
f <- dir(path.to.files, pattern=".tar.gz")
for(k in 1:length(f)){
# make sure the temporary dir is empty
file.remove(dir(path = tempdir(), full.names = TRUE)
untar(f[k], exdir = tempdir())
# do some analisys with the extracted files
}
私はむしろ、untarしからエラーをキャッチし、その破損したファイルをスキップし、単に私のループを続けるだろう。私はすでにtry
とtryCatch
を使用しようとしましたが、運がありません。
untar
にエラーではなく警告を表示する方法はありますか?
「tryとtryCatchを使用しようとしたときに起こったことの説明を含めてください。」これは、問題の診断に役立ちます。また、 'untar'にはtarプログラムにオプションを渡すextras引数があります。たぶん、tarプログラム自体には、より正常に失敗するオプションがあるかもしれません。 – lmo
'try'は追加の警告につながります:seq_len(ceiling(size/512L))のi)に対してですが、私は間違った方法で' tryCatch'を使用したことを知りました。私は単にエラーを評価せずに、untarコマンドの前に置くだけです。 tryCatchの内部にエラー処理関数を置くことで、この問題が解決されました。とにかくありがとう。 – smoff