使用子进程在 Python 脚本中输入内容来调用 Python 脚本
- 2025-01-17 09:22:00
- admin 原创
- 11
问题描述:
我有一个脚本a.py
,在执行时会向用户询问某些查询并以 json 格式构建输出。使用 python subprocess,我可以从另一个名为 的脚本调用此脚本b.py
。一切都按预期工作,只是我无法在变量中获取输出?我在 Python 3 中执行此操作。
解决方案 1:
要使用模块从另一个 Python 脚本调用subprocess
它并传递一些输入并获取其输出:
#!/usr/bin/env python3
import os
import sys
from subprocess import check_output
script_path = os.path.join(get_script_dir(), 'a.py')
output = check_output([sys.executable, script_path],
input='
'.join(['query 1', 'query 2']),
universal_newlines=True)
其中get_script_dir()
函数在这里定义。
一个更灵活的替代方法是导入模块a
并调用一个函数来获取结果(确保a.py
使用if __name__=="__main__"
保护,以避免在导入时运行不良代码):
#!/usr/bin/env python
import a # the dir with a.py should be in sys.path
result = [a.search(query) for query in ['query 1', 'query 2']]
您可以使用mutliprocessing
在单独的进程中运行每个查询(如果执行查询需要大量 CPU,那么它可能会提高时间性能):
#!/usr/bin/env python
from multiprocessing import freeze_support, Pool
import a
if __name__ == "__main__":
freeze_support()
pool = Pool() # use all available CPUs
result = pool.map(a.search, ['query 1', 'query 2'])
解决方案 2:
除了上述提到的,还有一种方式是使用内置函数。exec
该函数获取一串 Python 代码并执行它。
要在脚本文件上使用它,您可以将read
其简单地作为文本文件,如下所示:
#dir is the directory of a.py
#a.py, for example, contains the variable 'x=1'
exec(open(dir+'\\a.py').read())
print(x) #outputs 1
相关推荐
热门文章
项目管理软件有哪些?
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 项目管理必备:盘点2024年13款好用的项目管理软件
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
热门标签
云禅道AD