python - 如何使用一个 Python 脚本运行另一个 Python 脚本并将变量传递给它?

标签 python python-2.x

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

如果不将 analyzer.py 作为模块导入,最好的方法是什么?我如何在该脚本中引用传递给 analyzer.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)

分析器.py

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

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

我需要为这些脚本使用 Python 2。我使用的是 Windows 10 计算机。

最佳答案

1- exec 命令:

python 2:

execfile('test.py')

python 3:

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

2- os 命令:

测试1.py:

import os 

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

测试2.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(请参阅 Link):

import subprocess

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

另一个示例代码:

文件 1.py:

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

文件2.py:

import sys

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

4- socket 编程:在两个或多个 python 文件之间共享数据,您可以使用 socket 编程:参见 Link .

关于python - 如何使用一个 Python 脚本运行另一个 Python 脚本并将变量传递给它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61843030/

相关文章:

python - Django South 跳过一些迁移文件

python - Django过滤器 'first'查找多对多关系

Python 2 与 3 : consistent results with getting a byte from byte string

python 如何分割http请求线?

python - 如何确定字符串是否转义为unicode

Python doctests 和 unicode

python - 从被比较的两个字典之一的键创建一个新字典,Python

python - 如何在Web服务器中托管python脚本并通过从xamarin应用程序调用API来访问它?

python - 异常消息的默认编码

python - 如何进行时间序列向后重采样,例如从最后数据日期开始的 5 个工作日?