试图在其他Python程序中调用python文件

时间:2018-08-02 12:09:53

标签: python

如何从另一个python文件中调用一个python文件

示例:

我在C:\Python\a1.py中有一个文件

现在我正在研究a2.py,并想从a1.py呼叫a2.py。我该如何实现?

两个程序都必须位于同一位置以调用其他程序吗?

3 个答案:

答案 0 :(得分:2)

我假设您反对将代码从a1导入到a2,因此您需要子流程模块:

subprocess.run(["python", "a1.py"])

该参数应该是a1.py的路径,可以是相对的或绝对的。

我建议您看一下模块页面https://docs.python.org/3/library/subprocess.html#module-subprocess

尽管,大多数时候将a1导入a2是更好的解决方案。

答案 1 :(得分:0)

a1.py中:

import a2

...

a2.some_func()

其中some_func是您在a2.py中定义的函数。如果您想更具体一点,甚至可以做

from a2 import some_func
...
some_func()

关于两个文件是否需要位于同一位置:是。如果它们不在同一位置,则需要考虑目录结构(例如,如果import lib.a2在名为a2.py的文件中,则为lib)。

两个文件可能不在同一位置,但是文件必须位于 pythonpath 上。对于新手来说,这有点复杂,在您真正了解该语言之前,我不建议您深入了解它。您需要知道的是,使用pip安装的所有文件以及python的所有内置模块和库都位于操作系统上的某个文件夹中。您也可以将a2.py放在该文件夹中,它将起作用。

答案 2 :(得分:0)

如果两个文件都位于同一目录中,如下所示:

U:\work\Python>dir
 Volume in drive U is DATA
 Volume Serial Number is FACE-76BF

 Directory of U:\work\Python

08/01/2018  11:22 AM    <DIR>          .
08/01/2018  11:22 AM    <DIR>          ..
08/01/2018  11:29 AM               470 interleave.py
07/13/2018  04:59 PM    <DIR>          LTT-Analysis
07/31/2018  04:17 PM                30 test1.py
07/31/2018  04:17 PM                37 test2.py
07/31/2018  04:18 PM    <DIR>          __pycache__
               3 File(s)          4,633 bytes
               4 Dir(s)  408,614,400,000 bytes free

然后,您只需要将一个导入另一个即可:

test1.py:

def foo():
    return "bar"

test2.py:

import test1
print( test1.foo() )

结果:

U:\work\Python>test2.py
bar