如何在Python中导入文件?我想导入:

文件(例如file.py) 一个文件夹 在运行时根据用户输入动态地生成文件 文件的特定部分(例如,单个函数)


当前回答

from file import function_name  ######## Importing specific function
function_name()                 ######## Calling function

and

import file              ######## Importing whole package
file.function1_name()    ######## Calling function
file.function2_name()    ######## Calling function

以下是我现在已经理解的两种简单方法,确保你想导入的“file.py”文件只存在于你的当前目录中。

其他回答

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__)获取更多详细信息。

import sys
#print(sys.path)
sys.path.append('../input/tokenization')
import tokenization

要导入任何.py文件,可以使用上面的代码。

首先追加路径,然后导入

注:“. ./input/tokenization'目录中包含tokenization.py文件

使用Python 3.5或更高版本时,可以使用importlib。Util可以直接将.py文件作为模块导入任意位置,而不需要修改sys.path。

import importlib.util
import sys

def load_module(file_name, module_name)
    spec = importlib.util.spec_from_file_location(module_name, file_name)
    module = importlib.util.module_from_spec(spec)
    sys.modules[module_name] = module
    spec.loader.exec_module(module)
    return module

参数file_name必须为字符串或类路径对象。module_name参数是必需的,因为所有加载的Python模块都必须有一个(点)模块名(如sys、importlib或importlib.util),但您可以为这个新模块选择任何可用的名称。

你可以这样使用这个函数:

my_module = load_module("file.py", "mymod")

在使用load_module()函数将该模块导入Python进程一次之后,就可以使用给定的模块名导入该模块。

file.py:

print(f"file.py was imported as {__name__}")

one.py:

print(f"one.py was imported as {__name__}")
load_module("file.py", "mymod")
import two

two.py:

print(f"two.py was imported as {__name__})")
import mymod

对于上面的文件,您可以运行以下命令来查看file.py如何变得可导入。

$ python3 -m one
one.py was imported as __main__
two.py was imported as two
file.py was imported as mymod

这个答案基于官方的Python文档:

from file import function_name  ######## Importing specific function
function_name()                 ######## Calling function

and

import file              ######## Importing whole package
file.function1_name()    ######## Calling function
file.function2_name()    ######## Calling function

以下是我现在已经理解的两种简单方法,确保你想导入的“file.py”文件只存在于你的当前目录中。

from y import * 

假设你有一个文件x和y。 你想把y文件导入x。

然后转到您的x文件并放置上述命令。为了测试这一点,只需在y文件中放入一个打印函数,当导入成功时,在x文件中应该打印它。