大昔の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
にはこれが最初から書き込まれています。
ネット上に文献が見当たらなかったのでメモ。