如何将argparse参数传递给另一个python程序?

时间:2015-04-20 11:58:02

标签: python argparse

我正在绑定一个脚本,它会将argparse参数传递给另一个python

第一个脚本: t.py

import argparse
import subprocess
import os

commandLineArgumentParser = argparse.ArgumentParser()
commandLineArgumentParser.add_argument("-fname", "--fname",  help="first name")
commandLineArgumentParser.add_argument("-lname","--lname", help="last name")
commandLineArguments = commandLineArgumentParser.parse_args()

fname = commandLineArguments.fname
lname = commandLineArguments.lname

print "%s\n%s" %(fname,lname)

os.system("python test1.py")

test1.py的代码如下:

import argparse
import os

print "test abc"

我想将 lname fname 值传递给 test1.py 。这是他们的任何方式。

如果我跑了

,在上面的代码中

python t.py -fname ms lname = dhoni

然后输出

ms
dhoni
test abc

但我希望输出像下面那样

ms
dhoni
ms
dhoni 

4 个答案:

答案 0 :(得分:0)

试试test1.py

from sys import argv
print "%s\n%s" % (argv[1], argv[2])

答案 1 :(得分:0)

嗯我不明白你为什么要这样做,但你真的已经拥有完成这项任务所需的一切:

第一个python脚本(我称之为sof.py):

import argparse
import subprocess
import os

commandLineArgumentParser = argparse.ArgumentParser()
commandLineArgumentParser.add_argument("-fname", "--fname",  help="first name")
commandLineArgumentParser.add_argument("-lname","--lname", help="last name")
commandLineArguments = commandLineArgumentParser.parse_args()

fname = commandLineArguments.fname
lname = commandLineArguments.lname

print("%s\n%s" %(fname,lname))
command = "python sof2.py {arg1} {arg2}".format(arg1=fname, arg2=lname)
os.system(command)

第二个python scrit(这里是sof2.py)

import argparse
import subprocess
import os

commandLineArgumentParser = argparse.ArgumentParser()
commandLineArgumentParser.add_argument("fname")
commandLineArgumentParser.add_argument("lname")
commandLineArguments = commandLineArgumentParser.parse_args()

fname = commandLineArguments.fname
lname = commandLineArguments.lname

print "%s\n%s" %(fname,lname)

这给我以下执行:

python3 sof.py -fname foo -lname bar
foo
bar
foo
bar

注意:我使用python3,但是如果你必须使用python2,那么这段代码仍然是正确的,只需删除(周围的)print

答案 2 :(得分:0)

您可以修改test1.py以包含t.py并直接访问argparse变量。

test1.py

import t.py
print t.fname, t.lname

答案 3 :(得分:0)

将test1.py更改为:

import argparse
import os
import sys

print sys.argv
print "test abc"

test1.py致电t.py作为:

os.system("python test1.py vv gg hh")

现在vv gg hh可以使用test1.py {。}}。{/ p>