如何在Python中导入文件?我想导入:
文件(例如file.py) 一个文件夹 在运行时根据用户输入动态地生成文件 文件的特定部分(例如,单个函数)
如何在Python中导入文件?我想导入:
文件(例如file.py) 一个文件夹 在运行时根据用户输入动态地生成文件 文件的特定部分(例如,单个函数)
当前回答
有很多方法,如上所述,但我发现我只想导入文件的内容,而不希望必须写一行又一行,必须导入其他模块。因此,我想出了一种方法来获取文件的内容,甚至使用点语法(file.property),而不是将导入的文件与您的文件合并。 首先,这是我要导入的文件data。py
testString= "A string literal to import and test with"
注意:您可以使用.txt扩展名。 在mainfile.py中,首先打开并获取内容。
#!usr/bin/env python3
Data=open('data.txt','r+').read()
现在您有了字符串形式的内容,但是正在尝试访问数据。testString将导致一个错误,因为data是str类的一个实例,即使它确实有一个属性testString,它也不会执行您所期望的操作。 接下来,创建一个类。例如(双关语),ImportedFile
class ImportedFile:
然后把这个放进里面(用合适的缩进):
exec(data)
最后,像这样重新分配数据:
data=ImportedFile()
就是这样!就像访问任何其他模块一样,输入print(data.testString)将打印到控制台一个字符串文字,用于导入和测试。 然而,如果你想要从mod import *中获得等效的效果,只需删除类、实例赋值和删除exec即可。
希望这对你有所帮助。 石磊
其他回答
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()
我想补充一点,我在其他地方不太清楚;在模块/包中,当从文件中加载时,模块/包名必须以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
有几种方法可以将python脚本包含在abc.py中
例如,如果你的文件名为abc.py(导入abc) 限制是你的文件应该和你调用的python脚本在同一个位置。
进口美国广播公司
例如,如果你的python文件在Windows文件夹中。Windows文件夹与调用python脚本的位置相同。
从文件夹导入ABC
在情况下abc.py脚本是可用的内部internal_folder,是在文件夹内
导入ABC
正如James上面所回答的,如果你的文件在某个固定的位置
进口操作系统 导入系统 scriptpath = "../Test/MyModule.py" sys.path.append (os.path.abspath (scriptpath)) 进口MyModule里
如果你的python脚本更新了,你不想上传-使用这些语句自动刷新。好处:)
%load_ext autoreload
%autoreload 2
如果你想导入的模块不在子目录中,那么尝试以下方法并从最深的公共父目录运行app.py:
目录结构:
/path/to/common_dir/module/file.py
/path/to/common_dir/application/app.py
/path/to/common_dir/application/subpath/config.json
在app.py中,将客户端的路径追加到sys.path:
import os, sys, inspect
sys.path.append(os.getcwd())
from module.file import MyClass
instance = MyClass()
可选(如果你加载例如配置)(Inspect似乎是我的用例中最健壮的一个)
# Get dirname from inspect module
filename = inspect.getframeinfo(inspect.currentframe()).filename
dirname = os.path.dirname(os.path.abspath(filename))
MY_CONFIG = os.path.join(dirname, "subpath/config.json")
Run
user@host:/path/to/common_dir$ python3 application/app.py
这个解决方案适用于我的cli,以及PyCharm。
导入.py文件的最佳方法是使用__init__.py。最简单的方法是在你的.py文件所在的目录下创建一个名为__init__.py的空文件。
Mike Grouchy的这篇文章很好地解释了__init__.py及其用于制作、导入和设置python包的用法。