Jump to Navigation

写适用性高的代码-python小坑

在一段 python代码时,碰到了一个坑,虽然一直运行的很好,但后来把其加到supervisord中运行时却出了问题。

后来查了一下,原因也是比较简单的,因为程序中使用了os.getenv("HOME"),而supervisord在启动进程时不会默认给用户程序设置这个环境变量的,程序因此报错启动失败。

并且这个程序手动在console下执行根本遇不到这个问题的,没有考虑周全啊,或者是写代码的习惯并不太好吧。

以下是更通用的方式:

home = pwd.getpwuid(os.getuid()).pw_dir

因为getuid()函数总是对的,根据这个获取用户信息会适用性更好。

至于getuid()函数总是对的,这个说明在man getuid手册上:

The getuid() function shall always be successful

且谨记之,从点滴开始养成好的写代码习惯。

添加新评论

Plain text

  • 不允许HTML标记。
  • 自动将网址与电子邮件地址转变为链接。
  • 自动断行和分段。
CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.
Image CAPTCHA
Enter the characters shown in the image.


Main menu 2

Blog | by Dr. Radut