链接 Python 个脚本
Chaining Python Scripts
我有两个用户定义的 python 脚本。 First 获取文件并对其进行处理,而第二个脚本获取第一个和 运行s 可执行文件的输出,并将第一个脚本的输出提供给具有附加格式的程序。
我需要通过另一个 python 脚本来 运行 这些脚本,这是我的主要可执行脚本。
我搜索了一些关于这个主题的内容;
- 我可以使用
importlib
收集脚本的内容,以便在适当的时候调用它们。这需要脚本在我对路径环境变量的 directory/or 修改下。所以它看起来有点丑,看起来不像 pythonish。
- 内置
eval
函数。这需要用户编写类似服务器-客户端的结构,因为第二个脚本可能不得不 运行 上述程序多次,而第一个脚本仍然提供输出。
我觉得我的设计有问题,但我想不出更好的方法。
更详细的解释(可能是胡言乱语)
我需要对一些程序进行基准测试,这样做时我有一个标准格式的数据,需要将此数据提供给基准程序。这些脚本(由于基准的性质)对每个程序都是特殊的,需要与基准定义捆绑在一起,但我需要将这个程序创建为一个独立的可配置测试器。我想,我设计错了,很想听听设计方法。
PS:我不想限制用户,这也是我选择运行python脚本的原因。
我创建了一些测试脚本来确保它有效。
第一个(count_01.py)休眠100秒,然后从0数到99,发送给count_01.output。
第二个 (count_02.py) 读取第一个 (count_01.output) 的输出并将每个数字加 1 并将其写入 count_02.output。
第三个脚本 (chaining_programs.py) 运行第一个脚本并等待它完成,然后再调用第二个脚本。
# count_01.py --------------------
from time import sleep
sleep(100)
filename = "count_01.output"
file_write = open(filename,"w")
for i in range(100):
#print " i = " + str(i)
output_string = str(i)
file_write.write(output_string)
file_write.write("\n")
file_write.close()
# ---------------------------------
# count_02.py --------------------
file_in = "count_01.output"
file_out = "count_02.output"
file_read = open(file_in,"r")
file_write = open(file_out,"w")
for i in range(100):
line_in = file_read.next()
line_out = str(int(line_in) + 1)
file_write.write(line_out)
file_write.write("\n")
file_read.close()
file_write.close()
# ---------------------------------
# chaining_programs.py -------------------------------------------------------
import subprocess
import sys
#-----------------------------------------------------------------------------
path_python = 'C:\Python27\python.exe' # 'C:\Python27\python.exe'
#
# single slashes did not work
#program_to_run = 'C:\Users\aaaaa\workspace\Rich_Project_044_New_Snippets\source\count.py'
program_to_run_01 = 'C:\Users\aaaaa\workspace\Rich_Project_044_New_Snippets\source\count_01.py'
program_to_run_02 = 'C:\Users\aaaaa\workspace\Rich_Project_044_New_Snippets\source\count_02.py'
#-----------------------------------------------------------------------------
# waits
sys.pid = subprocess.call([path_python, program_to_run_01])
# does not wait
sys.pid = subprocess.Popen([path_python, program_to_run_02])
#-----------------------------------------------------------------------------
我有两个用户定义的 python 脚本。 First 获取文件并对其进行处理,而第二个脚本获取第一个和 运行s 可执行文件的输出,并将第一个脚本的输出提供给具有附加格式的程序。
我需要通过另一个 python 脚本来 运行 这些脚本,这是我的主要可执行脚本。
我搜索了一些关于这个主题的内容;
- 我可以使用
importlib
收集脚本的内容,以便在适当的时候调用它们。这需要脚本在我对路径环境变量的 directory/or 修改下。所以它看起来有点丑,看起来不像 pythonish。 - 内置
eval
函数。这需要用户编写类似服务器-客户端的结构,因为第二个脚本可能不得不 运行 上述程序多次,而第一个脚本仍然提供输出。
我觉得我的设计有问题,但我想不出更好的方法。
更详细的解释(可能是胡言乱语)
我需要对一些程序进行基准测试,这样做时我有一个标准格式的数据,需要将此数据提供给基准程序。这些脚本(由于基准的性质)对每个程序都是特殊的,需要与基准定义捆绑在一起,但我需要将这个程序创建为一个独立的可配置测试器。我想,我设计错了,很想听听设计方法。
PS:我不想限制用户,这也是我选择运行python脚本的原因。
我创建了一些测试脚本来确保它有效。 第一个(count_01.py)休眠100秒,然后从0数到99,发送给count_01.output。 第二个 (count_02.py) 读取第一个 (count_01.output) 的输出并将每个数字加 1 并将其写入 count_02.output。 第三个脚本 (chaining_programs.py) 运行第一个脚本并等待它完成,然后再调用第二个脚本。
# count_01.py --------------------
from time import sleep
sleep(100)
filename = "count_01.output"
file_write = open(filename,"w")
for i in range(100):
#print " i = " + str(i)
output_string = str(i)
file_write.write(output_string)
file_write.write("\n")
file_write.close()
# ---------------------------------
# count_02.py --------------------
file_in = "count_01.output"
file_out = "count_02.output"
file_read = open(file_in,"r")
file_write = open(file_out,"w")
for i in range(100):
line_in = file_read.next()
line_out = str(int(line_in) + 1)
file_write.write(line_out)
file_write.write("\n")
file_read.close()
file_write.close()
# ---------------------------------
# chaining_programs.py -------------------------------------------------------
import subprocess
import sys
#-----------------------------------------------------------------------------
path_python = 'C:\Python27\python.exe' # 'C:\Python27\python.exe'
#
# single slashes did not work
#program_to_run = 'C:\Users\aaaaa\workspace\Rich_Project_044_New_Snippets\source\count.py'
program_to_run_01 = 'C:\Users\aaaaa\workspace\Rich_Project_044_New_Snippets\source\count_01.py'
program_to_run_02 = 'C:\Users\aaaaa\workspace\Rich_Project_044_New_Snippets\source\count_02.py'
#-----------------------------------------------------------------------------
# waits
sys.pid = subprocess.call([path_python, program_to_run_01])
# does not wait
sys.pid = subprocess.Popen([path_python, program_to_run_02])
#-----------------------------------------------------------------------------