好吧,我在这里是事实。我有2个python脚本,我希望Script1触发Script2。我尝试了以下方法来做到这一点:
from subprocess import call
call(["python3", "script2.py"])
可怕的执行电话:
exec(open("script2.py").read())
最后:
os.system("script2.py 1")
所以只是为了确保我能为您提供所需的所有信息。我想首先运行script1然后一旦完成处理我想让script1触发script2。目前无论我尝试过什么,我都陷入了一个循环,其中一个脚本只是一次又一次地运行。
有什么想法吗?
以下是script1的实际代码:
import os
"""This looks like it is unnecessary but I can't include its context
in this post. Just know it has an actual purpose."""
input_file = "gs://link_to_audio_file.m4a"
audio = input_file
output_format = os.path.basename(input_file).replace("m4a", "flac")
os.system('ffmpeg -i %s -ar 16000 -ac 1 %s' % (audio,output_format))
os.system("python3 script2.py")
答案 0 :(得分:1)
通过注释掉对第二个脚本的调用,确保第一个脚本自行运行。如果它似乎仍然永远存在,那么除了尝试调用第二个脚本之外,还有一个问题。如果您有IDE,则可以单步执行代码以发现它挂起的位置。如果您不使用IDE,请在脚本中放置print语句,以便查看执行路径。你可能有一个循环呼叫吗?所以第一个python脚本调用第二个,第二个python脚本又调用第一个?
答案 1 :(得分:0)
使用os.system时,我相信您需要在
中包含pythonos.system("python script2.py 1")
我无法告诉您为什么在没有看到脚本的情况下进入循环。
答案 2 :(得分:0)
我终于解决了这个问题!我实际上是在第二个脚本中使用import语句,该脚本试图从第一个脚本导入变量,而是导入整个脚本,导致它在无限循环中运行。就像LAS建议的那样,做得很好!谢谢大家对此的所有帮助!