如何让一个python文件运行另一个?

Nat*_*ist 274 python

如何制作一个python文件来运行另一个?

例如,我有两个.py文件.我想要运行一个文件,然后让它运行另一个.py文件.

apc*_*apc 427

有很多方法.我将按倒置优先顺序列出它们(最好的第一个,最后一个):

  1. 像模块一样对待它: import file.这很好,因为它安全,快速,可维护.代码会被重用,因为它应该被完成.大多数Python库使用多个扩展到大量文件的方法运行.强烈推荐.请注意,如果你的文件被调用file.py,您import应该包括.py在最后延伸.
  2. 臭名昭着(和不安全)的exec命令: execfile('file.py').不安全,hacky,通常是错误的答案.尽可能避免.
  3. 产生一个shell进程: exec('file.py').绝望时使用.

  • **只是为案例#1**添加一些细节:假设您要将fileB.py导入fileA.py.假设文件在同一目录中,在fileA中你会写`import fileB`.然后,在fileA中,你可以调用fileB中的任何函数,如:`fileB.name_of_your_func()`.当然还有更多选项和细节,但这会让你开始运行. (58认同)
  • 使用import为函数添加了命名空间,例如function()变为filename.function().为避免这种情况,请使用"from name import*".这也将运行代码体.使用os.system()运行不会保留定义的函数(因为它在另一个进程中运行).execfile是Python 3中的exec(),它不起作用. (9认同)
  • 使用`subprocess`模块而不是`os`模块 (8认同)
  • 我对如何使用"import()"定义其他.py脚本的参数感兴趣 (5认同)
  • `execfile`工作:D (2认同)
  • 假设您知道什么是模块而模块不是您想要的模块,那么execfile是正确的答案。我认为没有什么理由比导入安全。您可能还想看看`compile`。 (2认同)
  • 最好首先是优先顺序,还是倒序优先? (2认同)

Eri*_*ski 57

使用python 2.7.3和Ubuntu 12.10获取一个python文件来运行另一个python文件:

  1. 把它放在main.py中:

    #!/usr/bin/python
    import yoursubfile
    
    Run Code Online (Sandbox Code Playgroud)
  2. 把它放在yoursubfile.py中

    #!/usr/bin/python
    print("hello")
    
    Run Code Online (Sandbox Code Playgroud)
  3. 运行:

    python main.py 
    
    Run Code Online (Sandbox Code Playgroud)
  4. 它打印:

    hello
    
    Run Code Online (Sandbox Code Playgroud)

因此main.py运行yoursubfile.py

有8种方法可以回答这个问题,这里有一个更典型的答案:如何导入其他Python文件?

  • 确保我们不使用“.”。导入的Python脚本文件名中的(点) (2认同)
  • 如何将参数传递给yoursubfile.py? (2认同)

Sam*_*sov 17

我使用subprocess.call它几乎像subprocess.Popen一样

from subprocess import call
call(["python", "your_file.py"])
Run Code Online (Sandbox Code Playgroud)

  • 如果存在像消息传递那样的无限循环,我该如何中断程序的执行? (2认同)

Ays*_*ser 15

  • 您只需使用以下代码即可运行.py文件:

import os 
os.system('python filename.py')
Run Code Online (Sandbox Code Playgroud)

注意:将文件放在主python文件的同一目录中.

  • @CristiFati 什么时候不起作用? (11认同)
  • @Moondra是的,这个方法确实会产生另一个进程,至少在Windows上是这样。另一方面,导入文件则不然。[通过运行“tasklist | 进行测试” 在cmd中找到str“python”`] (2认同)

xcr*_*_40 6

你可以使用这个脚本:

def run(runfile):
  with open(runfile,"r") as rnf:
    exec(rnf.read())
Run Code Online (Sandbox Code Playgroud)

句法:

run("file.py")
Run Code Online (Sandbox Code Playgroud)

  • 这背后的逻辑是什么? (2认同)

Axe*_*Der 6

from subprocess import Popen

Popen('python filename.py')
Run Code Online (Sandbox Code Playgroud)

how-can-i-make-one-python-file-run-another-file

  • 正是我正在寻找的。所有其他答案 ` import secondary exec(open(' secondary.py').read()) os.system('python secondary.py') call(["python", " secondary.py"]) ` 他们不这样做不允许同时创建辅助 python 文件的多个实例。它们都等待执行完成,然后您才能再次调用该文件。只有 Popen 允许多个异步调用。再次感谢。 (3认同)
  • 在 python3 上我需要使用 `Popen(['python3', 'filename.py'])` (2认同)

归档时间:

查看次数:

528356 次

最近记录:

5 年,10 月 前