【问题标题】:Run another python file from a python program?从 python 程序运行另一个 python 文件?
【发布时间】:2021-04-17 17:39:19
【问题描述】:

我想要一段可以运行另一个 python 文件的代码。我希望能够同时运行这两个文件。

print('Hello World') 

run ('this file') #obviously not real code

print('Hello World Agian') #continue with program

我真的需要这些程序同时运行。我不介意下载一个库来做。

【问题讨论】:

  • 直接运行import this_file,它会运行文件
  • os.system()subprocess.run()
  • 由于是python代码,最灵活到import

标签: python simultaneous


【解决方案1】:

更新来自this comment

您可以尝试使用以下代码发送 bash 命令:

import subprocess
process = subprocess.Popen("python script1.py & python script2.py &".split(), stdout=subprocess.PIPE)
output, error = process.communicate()

来自this question 的Bash 命令,用于运行来自this question 的bash 的代码。您需要 3 个程序:第一个运行此代码,第二个 (script1.py) 和第三个 (script2.py) 将由该程序运行。


原创

我创建了一个用于导入文件的类,尽管它对于你想要的东西可能有点过分了。你可以只用一个

import filename

,但是如果你需要导入用户输入名称的文件并重新导入其中的一些,你可以使用下面的这个类:

from importlib import __import__, reload
from sys import modules

class Importer:
    libname = ""
    import_count = 0
    module = None

    def __init__(self, name):
        self.libname = name
        self.import_count = 0

    def importm(self):
        if self.libname not in modules:
            self.module = __import__(self.libname)
        else:
            self.module = reload(self.module)
        self.import_count += 1

# test out Importer

importer = Importer("mymodule")

""" mymodule.py

print("Hello")

"""

importer.importm() # prints Hello
importer.importm() # prints Hello
importer.importm() # prints Hello (again)

print(importer.import_count)

我前段时间为一个被删除的问题开设了这门课(10k 查看my answer)。

【讨论】:

  • 是的,但导入它不会使 2 个文件同时工作。它们不是同时播放的,播放一个文件,然后播放下一个文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-06
  • 2023-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-20
  • 1970-01-01
相关资源
最近更新 更多