0

我是 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 将发送空值。请帮助解决我的问题。我的代码是:

      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 似乎无法正常工作。

4

2 回答 2

2

尝试:

  import OS
  os.environ['product']='product1'
  subprocess.call("make clean", shell=True)

等等

于 2013-06-26T09:46:35.330 回答
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的。

请注意,我在示例中使用的语法是 from 的语法python 2.7.3,但无论您如何处理,概念都几乎相同。

于 2013-06-18T17:29:08.240 回答