本问题已经有最佳答案,请猛点这里访问。

如何创建一个python文件来运行另一个?

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

docs.python.org / / modules.html教程

所以我execfile()模块通常是更好的。

有很多种方法。我将按倒排优先顺序列出它们(即,最佳优先,最差最后):

把它当作一个模块来对待:import file。这很好,因为它是安全、快速和可维护的。代码会像应该做的那样被重用。大多数Python库都使用多个方法运行,这些方法覆盖了许多文件。强烈推荐。请注意,如果您的文件名为file.py,则您的import不应在末尾包含.py扩展名。

臭名昭著的(和不安全的)执行命令:execfile('file.py')。没有安全感,很刻薄,通常回答错误。尽可能避免。

生成一个壳过程:os.system('python file.py')。绝望时使用。

只需为案例1添加一点细节:假设您希望将fileb.py导入filea.py。假设文件在同一个目录中,那么在filea中,您将写入import fileB。然后,在filea中,可以像这样调用fileb中的任何函数:fileB.name_of_your_func()。当然还有更多的选择和细节,但这会让你振作起来。

使用subprocess模块代替os模块

使用import可向函数添加名称间距,例如,function()变为filename.function()。要避免使用"从名称导入*"。这也将运行代码体。使用os.system()运行不会保留定义的函数(因为它是在另一个进程中运行的)。execfile在python3中是exec(),它不起作用。

execfile工作时间:d

#我解决了我的问题,非常容易!谢谢您!

我对如何使用"import()"定义其他.py脚本的参数感兴趣。

如果文件在子目录中呢?如果它有.py扩展名呢?如果文件名中有命令操作符,比如"-",该怎么办?"导入"行的外观如何?函数调用的外观如何?

假设您知道什么是模块,而模块不是您在这里想要的,那么execfile是正确的答案。我看不出它为什么比进口更不安全。你也可以看看compile。

最好的优先顺序是偏好或反向偏好?

如果需要调用"main"函数,那么case 1就不那么明显了。参见stackoverflow.com/a/14500330/3244382和stackoverflow.com/a/20158605/3244382

你能解释为什么execfile比import安全性低吗?

UNC路径可以很容易地与execfile(...)一起使用,您只需要使用确保使用正斜杠而不是反斜杠。execfile('//unc_network_folder/myUNCpythonscript.py')

第一个不起作用,给了我无效的语法

2号不工作,说不知道执行文件

数字3在记事本编辑器中打开py文件

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

把这个放在main.py中:

1
2#!/usr/bin/python
import yoursubfile

把这个放进yoursubfile.py

1
2#!/usr/bin/python
print("hello")

运行它:

1python main.py

它打印:

1hello

因此,main.py运行yoursubfile.py。

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

确保在导入的python脚本文件名中不使用"."(dot)

不是"import subfile.py",只是"import subfile",尽管文件名是subfile.py

哦,请把分号去掉。作为一个正在恢复的C/C++程序员,它伤害了我的眼睛!

同意,2号应该是print("hello")。

如何将参数传递给您的subfile.py?

谢谢,这个答案解决了我的问题。

您可以使用以下代码运行.py文件:

1
2import os
os.system('python filename.py')

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

这会产生另一个过程吗?

并不总是有效。- 1

我使用了subprocess.call,它几乎与subprocess.popen相同。

1
2from subprocess import call
call(["python","your_file.py"])

请在你的答案中加上解释。

获取"名称错误:未定义名称'python'"

@Tahlor将python.exe目录添加到环境变量中的路径变量中

您将其中一个文件视为python模块,并让另一个文件导入它(就像导入标准的python模块一样)。然后,后者可以引用导入模块中定义的对象(包括类和函数)。模块还可以运行它需要的任何初始化代码。请参阅http://docs.python.org/tutorial/modules.html

1
2
3from subprocess import Popen
Popen('python filename.py')
或者我怎么做一个python-file-ru

n-another-file

您可以使用此脚本:

1
2
3def run(runfile):
with open(runfile,"r") as rnf:
exec(rnf.read())
Syntax:
1run("file.py")

这背后的逻辑是什么?

超晚响应,但它基本上需要一个文件(变量runfile),打开它,读取它的内容。(内容在rnf.read()函数中读取)然后这些内容作为python代码执行,因此执行()调用。有关exec的信息可在此处找到

它可以从下面的主脚本中称为aa1.py,

1
2
3#!/usr/bin/python
import aa1
aa1
aa1.py可能在下面,
1print'abc'