2012-02-02 74 views
4

这个bash脚本可以赶上这是当数据通过STDIN例如通过设置的所有环境变量,例如:蟒蛇捕获环境变量

echo "Hello" | ./script.sh 

script.sh

#!/bin/bash 

CAPTURE_FILE=/var/log/capture_data 
env >> ${CAPTURE_FILE} 
exit 1 

它有任何方式我可以在python中做同样的事情?

解决:

这是最终的Python版本..

#!/usr/bin/env python 

import os 
import sys 

def capture(): 

    log = os.environ 
    data = open("/tmp/capture.log", "a") 
    for key in log.keys(): 
     data.write((key)) 
     data.write(" : ") 
     for n in log[key]: 
      data.write('%s' % ((n))) 
     data.write("\n") 
    data.close() 
    sys.exit(1) 

def main(): 

    capture() 

if __name__ == "__main__": 
    main() 

回答

8

当然,退房os.environ

[email protected] ~ $ python 
Python 2.7.2+ (default, Jan 20 2012, 17:51:10) 
[GCC 4.6.2] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import os 
>>> print os.environ 
{'LOGNAME': 'matan', 'WINDOWID': '25165833', 'DM_CONTROL': '/var/run/xdmctl', 'PATH': '/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games', 'DISPLAY': ':0', 'SSH_AGENT_PID': '3648', 'LANG': 'en_GB.UTF-8', ... } 
+0

感谢那个超级...工作很酷。 – krisdigitx 2012-02-02 11:15:21

+0

我编辑了一个文档链接。 – 2012-02-02 11:40:54

2

os.environ是包含所有的环境变量及其值的映射。