如何在Python中导入文件?我想导入:
文件(例如file.py) 一个文件夹 在运行时根据用户输入动态地生成文件 文件的特定部分(例如,单个函数)
如何在Python中导入文件?我想导入:
文件(例如file.py) 一个文件夹 在运行时根据用户输入动态地生成文件 文件的特定部分(例如,单个函数)
当前回答
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()
其他回答
你也可以这样做:从文件名导入一些东西
示例:from client import客户端 请注意,您不需要.py .pyw .pyui扩展名。
这就是我从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)
importlib被添加到Python 3中以编程方式导入模块。
import importlib
moduleName = input('Enter module name:')
importlib.import_module(moduleName)
应该从moduleName中删除.py扩展名。该函数还为相对导入定义了一个包参数。
在python 2.x中:
只需导入文件,不带.py扩展名 通过添加一个空的__init__.py文件,可以将文件夹标记为包 你可以使用__import__函数,它将模块名(不带扩展名)作为字符串扩展名
pmName = input('Enter module name:')
pm = __import__(pmName)
print(dir(pm))
输入help(__import__)获取更多详细信息。
导入文件..——参考链接
需要__init__.py文件来使Python将目录视为包含包,这样做是为了防止具有通用名称的目录,如string,在无意中隐藏了模块搜索路径中稍后出现的有效模块。
__init__.py可以只是一个空文件,但它也可以执行包的初始化代码或设置__all__变量。
mydir/spam/__init__.py
mydir/spam/module.py
import spam.module
or
from spam import module
我想补充一点,我在其他地方不太清楚;在模块/包中,当从文件中加载时,模块/包名必须以mymodule作为前缀。想象我的模块是这样布局的:
/main.py
/mymodule
/__init__.py
/somefile.py
/otherstuff.py
当从__init__.py加载somefile.py/otherstuff.py时,内容应该如下所示:
from mymodule.somefile import somefunc
from mymodule.otherstuff import otherfunc