我是python的新手,对于GUI,我使用wxpython。
我的问题是:
我必须为两种类型的产品(比如产品1和产品2)创建一个debian文件。可以通过运行README.package.creation文件来完成。对于“.bashrc”中的“product1”,我们必须更改
Product = product1
之后我们必须在新终端中“make clean”(否则.bashrc中的更改将不会生效,即如果我们不遵循该程序,“product”可能不等于“product 1”),那么我们有运行./Readme.package.creation.process。在Readme.package.creation中,它自动将产品类型作为“产品1” 如果我手动执行此操作它将正常工作,但如果我通过GUI执行此操作,Readme.package.creation文件将不会采用产品类型。从python null值将被发送。 请帮忙解决我的问题。 我的代码是:
subprocess.call("sed -i '/export PRODUCT/d' .bashrc", shell=True)
subprocess.call("sed -i '/export BOARD=TYpe/ a\ export PRODUCT=product1' .bashrc", shell=True)
os.chdir("/home/x/y/z")
subprocess.call("make clean", shell=True)
os.chdir("/home/x/main/src/package")
subprocess.call("sed -i 's/re.build -f -gui -p all/re.build -gui -p all -svn no/' README.package.creation", shell=True)
subprocess.call("gksu debian", shell=True)
subprocess.Popen("xfce4-terminal -e 'bash -c \"./README.package.creation -u %s\";sleep 10'" % (str(u_name)),shell=True)
之后如何做,我必须按照产品2的相同程序
编辑: 在python中os.environ怎么样? 我试图用os.putenv进行更改,然后os.environ似乎无法正常工作。
答案 0 :(得分:2)
尝试:
import OS
os.environ['product']='product1'
subprocess.call("make clean", shell=True)
等等
答案 1 :(得分:0)
您的问题非常简单,解决方案也是如此:。
在subprocess.Popen(...)
中,更改来自:
subprocess.Popen("xfce4-terminal -e 'bash -c \"./README.package.creation -u %s\";sleep 10'" % (str(u_name)),shell=True)
为:
subprocess.Popen("xfce4-terminal -e 'bash -c \"source ~/.bashrc; ./README.package.creation -u %s\";sleep 10'" % (str(u_name)),shell=True)
基本上,在调用包创建命令之前,您要求bash
获取.bashrc
文件。
另一个例子:
sgulati@precise:~$ cat /tmp/1.sh
export A=100
sgulati@precise:~$ python -c "import subprocess
print subprocess.Popen(['bash', '-c', 'source /tmp/1.sh; echo \$A'], stdout=subprocess.PIPE).stdout.read()"
100
在此示例中,我在A=100
,/tmp/1.sh
中声明了变量source
,然后执行echo $A
。由于source /tmp/1.sh
,A
的值在执行echo $A
时已知。
请注意我在我的示例中使用的语法是来自python 2.7.3
的语法,但无论你怎么做,这个概念都非常相似。