在python中将子进程与fab一起使用

我是Python的新手,正在尝试使用子进程在另一个脚本中运行一个脚本.我在网上发现了一些资源,这些资源非常接近,但不幸的是,这些资源无法帮助我正确运行代码.这是我想做的:在我的script1(主脚本)中,我正在创建fabfile...

我是Python的新手,正在尝试使用子进程在另一个脚本中运行一个脚本.我在网上发现了一些资源,这些资源非常接近,但不幸的是,这些资源无法帮助我正确运行代码.

这是我想做的:
在我的script1(主脚本)中,我正在创建fabfile.py(script2).此脚本2或fabfile.py需要从脚本1执行.经过研究,我发现execfile和os.systems并不是很好的选择,因此我决定使用子进程. (参考:How can I make one python file run another?)

这是我在做什么,但没有工作:

from os.path import expanduser
home = expanduser("~")
import os
os.getcwd() 
desk = "/Desktop"
path = str(home)+str(desk)
f = open("fabfile.py","w") # Creating a fabfile.py
f.write("from fabric.api import run \ndef task1(): \n    run('ls')")
import subprocess
host = raw_input("Enter the host IP with username e.g. root@10.0.0.2:")
p1 = subprocess.Popen(['fab', '-f path/fabfile.py', '-H host'],stdout=subprocess.PIPE)
output = p1.communicate()
print output

注意:在行

p1 = subprocess.Popen(['fab', '-f path/fabfile.py', '-H host'],stdout=subprocess.PIPE)

我尝试了许多不同的格式-引号和双引号位置,变量的$和%等,但似乎都没有用.知道我在做什么错吗?
我看到的示例通常很简单,没有任何变量用作参数.

解决方法:

>不要在字符串中指定python变量
>单独的标志

p1 = subprocess.Popen(['fab', '-f', path+'/fabfile.py', '-H', host],stdout=subprocess.PIPE)

>加入路径时,最好使用os.path.join()

fab_file = os.path.join(os.path.expanduser("~"), "Desktop", 'fabfile.py')

本文标题为:在python中将子进程与fab一起使用

基础教程推荐