Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 导入当前目录中的所有文件_Python - Fatal编程技术网

Python 导入当前目录中的所有文件

Python 导入当前目录中的所有文件,python,Python,我刚刚开始了一个python项目。目录结构如下: /algorithms ----/__init__.py ----/linkedlist --------/__init__.py --------/file1.py --------/file2.py /tests ----/test_linkedlist from algorithms.linkedlist import * import unittest 您也可以查看 在算法下的每个子文件夹中,在\uuu

我刚刚开始了一个python项目。目录结构如下:

/algorithms  
----/__init__.py  
----/linkedlist  
--------/__init__.py  
--------/file1.py  
--------/file2.py  
/tests  
----/test_linkedlist
from algorithms.linkedlist import *  
import unittest
您也可以查看

算法
下的每个子文件夹中,在
\uuuuu init\uuuuu
文件中,我逐一为所有文件包括以下内容:

from .file1 import *
from .file2 import *
等等

我试图实现的任务是使用查询同时运行所有测试:

python3 -m unittest discover tests
tests目录中的每个文件的启动方式如下:

/algorithms  
----/__init__.py  
----/linkedlist  
--------/__init__.py  
--------/file1.py  
--------/file2.py  
/tests  
----/test_linkedlist
from algorithms.linkedlist import *  
import unittest
现在,如果我想向linkedlist目录添加一个新文件,我将创建该文件,然后在
\uuu init\uu
文件中添加另一个
from.filename import*


如何在
\uuuu init\uuuu
文件中编写脚本,以便每次创建新文件时,不必手动插入导入命令

那么
\uuuu init\uuuu
在同一个文件夹中?正如前面所说,import语句是
\uuuu import\uuu
函数的语法糖

因此,我们可以使用:

import importlib
import glob
for file in glob.iglob('*.py'):
    importlib.__import__(file)
这不起作用的一些原因:

  • 您希望加载模块中的函数
    import*from
    语法。使用此代码,您只能运行
    file1.test
  • 您从另一个目录运行脚本加载,这会混淆
    glob
    。我们必须指定实际的工作目录
  • \uuuu导入\uuuu
    更愿意知道模块名称
为了找到解决方案,我将answer中的
import*from
函数与blog中的
pkgutil.walk\u包相结合


在初始化文件中复制粘贴此项失败。是,初始化文件位于同一文件夹中。我正试图从包的根目录运行问题中给出的test命令。@OmarShalla失败是什么意思?您的意思是文件没有正确包含,因此您的测试失败了,还是建议的代码本身产生了错误?建议的代码产生了错误。您可以克隆我的存储库并自己尝试。错误日志太长,无法在此发布。我再次从包的根目录(包含算法和测试文件夹的目录)运行以下命令“python3-m unittest discover tests”,现在就用您的git进行测试:)谢谢您的帮助!