同时运行两个python文件

新手上路,请多包涵

我试过使用

#!/bin/bash
python ScriptA.py &
python ScriptB.py &

同时运行两个脚本,但它始终使用 ScriptA 返回“无效语法”,即使所有 python 文件都在同一个文件夹中。

运行两个脚本的文件:

 def song():
user = input()
    if user == "Chance":
        python ScriptA.py &
        python ScriptB.py &
   else:
        print("Error")

到目前为止,我找到的解决方案(例如将该脚本放在一行中)不起作用,因为错误仍然显示。

- - - - - - - - - - - - - 编辑 - - - - - - - - - - - - —

这两个脚本单独运行良好,但是,您提供的所有解决方案仍然按顺序运行。脚本 A 是通过 OpenCV 播放的视频,脚本 B 是通过播放声音播放的歌曲。

脚本A:

 import cv2
import numpy as np
import os
os.environ['SDL_VIDEO_CENTERED'] = '1'
cap = cv2.VideoCapture("video.mp4")
while(cap.isOpened()):
  ret, frame = cap.read()
  if ret == True:
    cv2.imshow('Frame',frame)
    if cv2.waitKey(25) & 0xFF == ord('q'):
      break
  else:
    break
cap.release()
cv2.destroyAllWindows()

脚本B:

 from playsound import playsound
a = (r"C:\Users\A\Desktop\sound.mp3")
playsound(a)

如您所知,我正在尝试在视频旁边显示一首歌曲。我试图显示一个有声音的视频,但 openCV 出于某种原因没有输出声音。有什么建议么?

原文由 A.J 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 506
2 个回答

我认为您正在寻找多线程

您可以将两个脚本合并到另一个脚本中,然后使用 theads 启动它们

- 编辑 -

from threading import Thread

import cv2
import numpy as np
import os
from playsound import playsound

def play_sound():
    # import your script A
    a = (r"C:\Users\A\Desktop\sound.mp3")
    playsound(a)

def CV2_stuff():
    # import your script B
    os.environ['SDL_VIDEO_CENTERED'] = '1'
    cap = cv2.VideoCapture("video.mp4")
    ...

Thread(target = play_sound).start()
Thread(target = CV2_stuff).start()

希望能帮助到你

这也可以

import ScriptA
import ScriptB

ScriptA.function()
ScriptB.function()

但他们不会同时执行

原文由 Peko Chan 发布,翻译遵循 CC BY-SA 3.0 许可协议

您必须导入 os 模块并使用 system 函数,然后将您正在运行的两个 Python 文件分开 &&

 import os
def song():
    user = input()
    if user == "Chance":
        os.system('python ScriptA.py && python ScriptB.py')
    else:
        print("Error")

song()

但我会建议您将要运行的两个文件导入到第三个文件中,然后像正常函数一样运行其中的函数。

例如

import ScriptA
import ScriptB

ScriptA.function()
ScriptB.function()

如果脚本中没有函数,脚本会在导入后立即运行。

原文由 James Python 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题