0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

昔のALMAデータのキャリブレーションでValueError: invalid literal for int() with base 10: ''が出て止まるとき

Posted at

大昔のALMA観測データを解析したいことってよくありますよね。

Cycle 4以前くらいの有史以前のデータを落としてscriptForPI.pyを実行するときにはこんなエラーが出ることがあります。

ValueError: invalid literal for int() with base 10: ''

これはscriptForPI.pyの中でディスクの空き容量を見積もる処理

tmppipe = os.popen("du -smc ../* | grep total | tail -n 1 | cut -f1")
packspace = int((tmppipe.readline()).rstrip('\n'))
tmppipe.close()

os.popen()内のduコマンドが、日本語環境下で正しくディスクの現在の使用量を返していないのが原因です。

このduコマンドは結構力ずくの処理をしていて、いったん全部の使用量を出してから最後の合計を表示している行をgrep totalで抜こうとしています。しかし、環境が日本語だと、"total"ではなくて漢字で「合計」と表示されてしまいます。従って、検索結果が空となり、数値ではなく''tmppipeに代入されてしまい、上記ValueErrorが発生するのです。

これを応急処置的に解決するためには、scriptForPI.pyの上のほうで

os.environ["LANG"] = "C"

とやって、日本語への翻訳を切れば良いです。ちなみに、ちゃんと動くscriptForPI.pyにはこれが最初から書き込まれています。

ネット上に文献が見当たらなかったのでメモ。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?