我正在使用python 3,我需要一个脚本来调用另一个脚本并在不同的shell中运行它,而不传递参数,我使用的是mac os x,但我需要它是跨平台的。
我试过
import sys
import os
import datetime
os.remove('Logs/consoleLog.txt')
try:
os.remove('Temp/commands.txt')
except:
...
stopSim = False
command = ''
okFile = open('ok.txt', 'w')
okFile.write('True')
consoleLog = open('Logs/consoleLog.txt', 'w')
okFile.close()
while not stopSim:
try:
sysTime = datetime.datetime.now()
stringT = str(sysTime)
split1 = stringT.split(" ")
split2 = split1[0].split("-")
split3 = split1[1].split(":")
for i in range(3):
split2.append(split3[i])
timeString = "{0}-{1}-{2} {3}:{4}".format(split2[2], split2[1], split2[0], split2[3], split2[4])
except:
timestring = "Time"
commandFile = open('Temp/commands.txt', 'w')
command = input(timeString + ": ")
command = command.lower()
consoleLog.write(timeString + ': ' + command + "\n")
commandFile.write(command)
commandFile.close()
if command == 'stop simulation' or command == 'stop sim':
stopSim = True
consoleLog.close()
os.remove('Temp/commands.txt')
但他们都没有达到我的需要。
我使用第二个脚本来获取输入,而第一个脚本处理输出......
修改
这是我的第二个脚本上的代码:
#Open console
while not consoleOpent:
try:
okFile = open('ok.txt', 'r')
c = okFile.read()
if c == 'True':
consoleOpent = True
except:
...
这就是我打电话的地方以及脚本1中其他脚本的用法:
grequests
很抱歉这个问题很长...... 欢迎任何改进代码的建议。
答案 0 :(得分:0)
最简单的解决方案可能是让第二个脚本的内容成为第一个脚本中的一个函数,然后将其作为multiprocessing
Process
执行。请注意,您可以使用e.q. multiprocessing.Pipe
或multiprocessing.Queue
在不同进程之间交换数据。您还可以通过multiprocessing.sharedctypes
分享值和数组。
答案 1 :(得分:0)
这将取决于平台。这是Mac OS X的解决方案。
使用以下内容创建新文件run_script2
:
/full/path/to/python /full/path/to/script2.py
使其可执行:chmod +x run_script2
使用以下命令从Python运行:
os.system('open -a Terminal run_script2')
或者您可以使用:subprocess.call
。
subprocess.call(['open -a Terminal run_script2'], shell=True)
在Windows上,您可以执行与(未经测试)类似的操作:
os.system('start cmd /D /C "python script2.py && pause"')