如何在Python中导入文件?我想导入:
文件(例如file.py) 一个文件夹 在运行时根据用户输入动态地生成文件 文件的特定部分(例如,单个函数)
如何在Python中导入文件?我想导入:
文件(例如file.py) 一个文件夹 在运行时根据用户输入动态地生成文件 文件的特定部分(例如,单个函数)
当前回答
只是在另一个python文件中导入python文件
假设我有一个help .py python文件,它有一个显示函数,
def display():
print("I'm working sundar gsv")
在app.py中,你可以使用display函数,
import helper
helper.display()
输出,
我正在工作,桑达gsv
注意:不需要指定.py扩展名。
其他回答
将python文件从一个文件夹导入到另一个文件夹的复杂方法并不多。只需要创建一个__init__.py文件来声明这个文件夹是一个python包,然后转到你想要导入的主机文件
从root。parent。folder。file导入变量,类,等等
这就是我从python文件调用函数的方式,这对我来说是灵活的,可以调用任何函数。
import os, importlib, sys
def callfunc(myfile, myfunc, *args):
pathname, filename = os.path.split(myfile)
sys.path.append(os.path.abspath(pathname))
modname = os.path.splitext(filename)[0]
mymod = importlib.import_module(modname)
result = getattr(mymod, myfunc)(*args)
return result
result = callfunc("pathto/myfile.py", "myfunc", arg1, arg2)
第一个案例 你想导入文件A.py到文件B.py中,这两个文件在同一个文件夹中,就像这样:
.
├── A.py
└── B.py
你可以在文件B.py中这样做:
import A
or
from A import *
or
from A import THINGS_YOU_WANT_TO_IMPORT_IN_A
然后你就可以在B.py文件中使用A.py文件中的所有函数了
第二个案例 你想导入B.py文件中的/A.py文件夹,这两个文件不在同一个文件夹中,就像这样:
.
├── B.py
└── folder
└── A.py
你可以在文件B.py中这样做:
import folder.A
or
from folder.A import *
or
from folder.A import THINGS_YOU_WANT_TO_IMPORT_IN_A
然后你就可以在B.py文件中使用A.py文件中的所有函数了
总结
在第一种情况下,a .py文件是您在B.py文件中导入的模块,您使用了import module_name语法。 在第二种情况下,文件夹是包含模块A.py的包,您使用导入package_name.module_name语法。
有关包和模块的更多信息,请参阅此链接。
Python的一个非常不为人知的特性是导入zip文件的能力:
library.zip
|-library
|--__init__.py
该包的__init__.py文件包含以下内容:
def dummy():
print 'Testing things out...'
我们可以编写另一个脚本,它可以从zip归档文件中导入包。只需要将zip文件添加到sys.path。
import sys
sys.path.append(r'library.zip')
import library
def run():
library.dummy()
run()
这帮助我用Visual Studio Code构建我的Python项目。
当你没有在目录中声明__init__.py时,可能会导致这个问题。目录变成隐式的名称空间包。下面是关于Python导入和项目结构的一个很好的总结。
另外,如果你想使用顶部栏中的Visual Studio Code运行按钮,脚本不在主包中,你可以尝试从实际目录运行控制台。
例如,你想要从测试包中执行一个打开的test_game_item.py,并且你有Visual Studio Code在省略(主包)目录中打开:
├── omission
│ ├── app.py
│ ├── common
│ │ ├── classproperty.py
│ │ ├── constants.py
│ │ ├── game_enums.py
│ │ └── __init__.py
│ ├── game
│ │ ├── content_loader.py
│ │ ├── game_item.py
│ │ ├── game_round.py
│ │ ├── __init__.py
│ │ └── timer.py
│ ├── __init__.py
│ ├── __main__.py
│ ├── resources
│ └── tests
│ ├── __init__.py
│ ├── test_game_item.py
│ ├── test_game_round_settings.py
│ ├── test_scoreboard.py
│ ├── test_settings.py
│ ├── test_test.py
│ └── test_timer.py
├── pylintrc
├── README.md
└── .gitignore
目录结构来自[2]。
你可以试着这样设置:
(Windows) Ctrl + Shift + P→Preferences: Open Settings (JSON)。
将这一行添加到用户设置中:
"python.terminal.executeInFileDir": true
对于其他系统,更全面的答案也在这个问题中。