代码之家  ›  专栏  ›  技术社区  ›  A.J

同时运行两个python文件

  •  6
  • A.J  · 技术社区  · 6 年前

    我试过使用

    #!/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是通过playsound播放的歌曲。

    脚本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由于某种原因无法输出声音。有什么建议吗?

    4 回复  |  直到 6 年前
        1
  •  9
  •   Peko Chan    6 年前

    我认为您正在寻找多线程

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

    --编辑--

    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()
    

    但他们不会同时被处决

        2
  •  2
  •   StaceyGirl    6 年前

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

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

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

    e、 g。

    import ScriptA
    import ScriptB
    
    ScriptA.function()
    ScriptB.function()
    

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

        3
  •  0
  •   NSM    6 年前

    您可以尝试操作系统。系统:

    import os
    
    os.system("python ScriptA.py &")
    os.system("python ScriptB.py &")
    
        4
  •  0
  •   Lucca Viccini    6 年前

    您可以在python空闲状态下打开这两个文件,然后分别运行它们。 如果需要同时运行两个文件(第一种方式是在每个文件上按F5的延迟),可以使用PyCharm并下载 多次运行 插件。