本问题已经有最佳答案,请猛点这里访问。
如何创建一个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'