Python 3.x 从打开另一个shell的另一个python脚本执行python脚本

Python 3.x 从打开另一个shell的另一个python脚本执行python脚本,python-3.x,Python 3.x,我使用的是Python3,我需要一个脚本来调用另一个脚本并在不同的shell中运行它,无需传递参数,我使用的是MacOSX,但我需要它是跨平台的 我试过了 os.system('script2.py') subprocess.Popen('script2.py', shell=true) os.execl(sys.executable, "python3", 'script2.py') 但没有一个能满足我的需要 我使用第二个脚本获取输入,而第一个脚本处理输出

我使用的是Python3,我需要一个脚本来调用另一个脚本并在不同的shell中运行它,无需传递参数,我使用的是MacOSX,但我需要它是跨平台的

我试过了

    os.system('script2.py')  
    subprocess.Popen('script2.py',     shell=true)
    os.execl(sys.executable, "python3", 'script2.py')
但没有一个能满足我的需要

我使用第二个脚本获取输入,而第一个脚本处理输出

编辑

这是我的第二个脚本中的代码:

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')
这就是我调用的地方,以及脚本1中另一个脚本的作用:

#Open console

while not consoleOpent:
    try:
        okFile = open('ok.txt', 'r')
        c = okFile.read()
        if c == 'True':
            consoleOpent = True
    except:
        ...
抱歉问了这么长的问题。。。
欢迎任何改进代码的建议。

最简单的解决方案可能是将第二个脚本的内容作为第一个脚本中的函数,并将其作为
进程执行。请注意,您可以使用e.q.
多处理.Pipe
多处理.Queue
在不同进程之间交换数据。您还可以通过
多处理共享值和数组。SharedTypes

最简单的解决方案可能是将第二个脚本的内容作为第一个脚本中的函数,并作为
进程执行。请注意,您可以使用e.q.
多处理.Pipe
多处理.Queue
在不同进程之间交换数据。您还可以通过
多处理共享值和数组。SharedTypes

这将取决于平台。这里有一个适用于MacOSX的解决方案

使用以下内容创建新文件
运行脚本2

/full/path/to/python /full/path/to/script2.py
使其可执行。:
chmod+x运行脚本2

使用以下命令从Python运行:

os.system('open -a Terminal run_script2')
或者,您可以使用:
子流程。调用

subprocess.call(['open -a Terminal run_script2'], shell=True)
在Windows上,您可以执行类似的操作(未经测试):


这将取决于平台。这里有一个适用于MacOSX的解决方案

使用以下内容创建新文件
运行脚本2

/full/path/to/python /full/path/to/script2.py
使其可执行。:
chmod+x运行脚本2

使用以下命令从Python运行:

os.system('open -a Terminal run_script2')
或者,您可以使用:
子流程。调用

subprocess.call(['open -a Terminal run_script2'], shell=True)
在Windows上,您可以执行类似的操作(未经测试):


@是的,基本上就是这样。我添加了一个到文档的链接。@Enderlike61是的,它基本上就是这样做的。我添加了一个指向文档的链接。