如何使用一个Python脚本来运行另一个Python脚本,并向其传递变量?

问题描述 投票:1回答:1

我有一个Python脚本。让我们称它为 控制器.py. 我想使用 控制器.py 来运行另一个Python脚本,并将几个变量传递给它。让我们调用第二个脚本 analyzer.py.

有什么好办法可以在不导入 analyzer.py 作为模块?我如何引用我传递给 分析器.py 的脚本中?

这是我使用subprocess.py失败的尝试。

controller.py

import subprocess

var1='mytxt'
var2=100
var3=True
var4=[['x','y','z'],['x','c','d']]
var5=r"C:\\Users\\me\\file.txt"

myargs=var1,var2,var3,var4,var5
my_lst_str = ' '.join(map(str, myargs))
my_lst_str ='python analyzer.py '+my_lst_str

subprocess.call(my_lst_str,shell=True)

analyzer.py

print 'Argument List:', str(sys.argv)

我在Stack Overflow上看过类似的问题。我试过的一个经常被推荐的解决方案是将analyzer.py作为一个模块导入,但analyzer.py定义了许多不同的函数。将它作为一个模块使用会创建很多嵌套函数,而管理这些嵌套函数中的变量范围是很麻烦的。

我需要使用Python 2来处理这些脚本。我使用的是 Windows 10 机器。

python python-2.x
1个回答
2
投票

1- exec 命令。

python2:

execfile('test.py')

python3:

exec(open('test.py').read())

2- os 命令。

test1.py

import os 

#os.system('python test2.py')
os.system("python test2.py arg1 arg2")  

test2.py

import sys

print 'Number of arguments:', len(sys.argv), 'arguments.'
print 'Argument List:', str(sys.argv)

3- subprocess 命令。

from subprocess import call
call(["python", "test.py"])

用于传递参数和shell命令,使用 subprocess(请看这个 鏈接):

import subprocess

# Simple command
subprocess.call(['ls', '-1'], shell=True)

另一个例子代码:

file1.py

args ='python file1.py id ' + 1
subprocess.call(args)

file2.py

import sys

print 'Number of arguments:', len(sys.argv), 'arguments.'
print 'Argument List:', str(sys.argv)

4- socket pogramming在两个或多个Python文件之间共享数据,你可以使用 socket programming:见此 鏈接

© www.soinside.com 2019 - 2024. All rights reserved.