<Python> OSError: [Errno 22] Invalid argument

Python Scriptをクーロンcronさん使って自動実行させていたら、エラーを発見。

OSError: [Errno 22] Invalid argument

うーん、、なんじゃろと見ていたら、os.getlogin()でこけていた。
ぐーぐるした結果、os.getlogin()はターミナルTerminalの情報を取りにいくらしい。
なので、cronさんからだと情報が取れずエラーを吐く。。。っぽい。。。

解決策は、pwd.getpwid(os.getuid())[0]か、```getpass.getuser()````らしい。

In [1]: import os

In [2]: import pwd
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-2-4b8a6427d7f8> in <module>()
----> 1 import pwd

ImportError: No module named 'pwd'

In [3]: import getpass

In [4]: os.getlogin()
Out[4]: 'hage'

In [5]: getpass.getuser()
Out[5]: 'hage'

Windows/Anacondaだと、pwdがなかった。。。
ふーん。。。

stackoverflow.com

https://docs.python.jp/3/library/pwd.html