How can I make one python file run another?
如何创建一个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") |
运行它:
它打印:
因此,main.py运行yoursubfile.py。
有8种方法可以回答这个问题,这里有一个更规范的答案:如何导入其他python文件?
- 确保在导入的python脚本文件名中不使用"."(dot)
- 不是"import subfile.py",只是"import subfile",尽管文件名是subfile.py
- 哦,请把分号去掉。作为一个正在恢复的C/C++程序员,它伤害了我的眼睛!
- 同意,2号应该是print("hello")。
- 如何将参数传递给您的subfile.py?
- 谢谢,这个答案解决了我的问题。
1 2
| import os
os.system('python filename.py') |
注:将文件放在主python文件的同一目录中。
我使用了subprocess.call,它几乎与subprocess.popen相同。
1 2
| from subprocess import call
call(["python","your_file.py"]) |
- 请在你的答案中加上解释。
- 获取"名称错误:未定义名称'python'"
- @Tahlor将python.exe目录添加到环境变量中的路径变量中
您将其中一个文件视为python模块,并让另一个文件导入它(就像导入标准的python模块一样)。然后,后者可以引用导入模块中定义的对象(包括类和函数)。模块还可以运行它需要的任何初始化代码。请参阅http://docs.python.org/tutorial/modules.html
1 2 3
| from subprocess import Popen
Popen('python filename.py') |
或者我怎么做一个python-file-run-another-file
您可以使用此脚本:
1 2 3
| def run(runfile):
with open(runfile,"r") as rnf:
exec(rnf.read()) |
Syntax:
- 这背后的逻辑是什么?
- 超晚响应,但它基本上需要一个文件(变量runfile),打开它,读取它的内容。(内容在rnf.read()函数中读取)然后这些内容作为python代码执行,因此执行()调用。有关exec的信息可在此处找到
它可以从下面的主脚本中称为aa1.py,
1 2 3
| #!/usr/bin/python
import aa1
aa1 |
aa1.py可能在下面,