+ -
当前位置:首页 → 问答吧 → 【求助】Python的environ函数在hudson中

【求助】Python的environ函数在hudson中

时间:2011-03-30

来源:互联网

各位牛人,最近我因为需要使用计算机的USERNAME这个参数,在任何的Python IDLE中运行都没有问题,但是惟独在Hudson中运行,就出问题了。。。
能给个其他的方法使用python在hudson中获得USERNAME这个变量么?

我试过的方法如下:
1. getpass:
Python code

import getpass
a = getpass.getuser()
print a


但在hudson中,出错了。。


2.environ
Python code

import os, sys
a = os.environ.get('USERNAME')
print a


但在Hudson中,打印的居然是 NONE


3. environ
Python code

import os, sys
a = os.environ['USERNAME']
print a


但是在hudson中,出错了。。。

我看了下os.environ.get的函数原型: os.environ.get(key, failobj=NONE


然后我用一个小程序打印出了os和hudson的所有环境变量:
Python code

import os, sys
a = os.environ.keys()
for i in range(len(a)):
    b = os.environ.get(a[i])
    print a[i] + ': ' + b



结果发现,很多都不一样,而且有些hudson有的,os没有,os有的,hudson都没有,难怪要打印NONE了。。。

请问各位大侠,我如何在hudson用python打印USERNAME?!

我试着用os.system(command),但是我得到的返回值为1:
Python code

>>> import os
>>> os.system('%USERNAME%')
1

作者: jiaoxiaogu   发布时间: 2011-03-30

那就是什么hudson的bug。你执行下:
Python code
os.system('echo %USERNAME%')

如果这个也打印不出来,说明这个python子进程被创建的时候环境变量就不对。要不然别用什么hudson,要不然读系统注册表。

作者: iambic   发布时间: 2011-03-30

引用 1 楼 iambic 的回复:
那就是什么hudson的bug。你执行下:

Python code
os.system('echo %USERNAME%')

如果这个也打印不出来,说明这个python子进程被创建的时候环境变量就不对。要不然别用什么hudson,要不然读系统注册表。


Python IDLE
>>> import os
>>> os.system('echo %USERNAME%')
0
>>> print (os.system('echo %USERNAME%'))
0

Hudson:
[workspace] $ python "C:\Program Files\Apache Software Foundation\Tomcat 6.0\temp\hudson1225343433149993125.py"
%USERNAME%
0

作者: jiaoxiaogu   发布时间: 2011-03-30

引用 1 楼 iambic 的回复:
那就是什么hudson的bug。你执行下:

Python code
os.system('echo %USERNAME%')

如果这个也打印不出来,说明这个python子进程被创建的时候环境变量就不对。要不然别用什么hudson,要不然读系统注册表。


这个hudson还得必须用。。。
就只能想想读取注册表了。。。这是个好主意。。。
我再去研究研究。。。

作者: jiaoxiaogu   发布时间: 2011-03-30