En Python, les scripts avec ** tiret (-) ** dans le nom de fichier ne peuvent pas être des instructions importées. Cependant, si je veux vraiment importer le nom du fichier avec des traits d'union pour écrire un test, j'ai trouvé quoi faire, alors prenez note.
__import__
** \ _ \ _ import \ _ \ _ ** prend le chemin du fichier comme argument et retourne le module du fichier.
load-path.py
import sys
path = sys.path
>>> module = __import__("load-path")
>>> type(module)
<type 'module'>
>>> dir(module)
['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'sys', 'path']
>>> dir.path
Vous pouvez désormais facilement importer même des fichiers avec des tirets.
py:unit.test.py
import unittest
class Tester(unittest.TestCase):
module = __import__("load-path")
def setUp(self):
for key in dir(self.module):
setattr(self, key, getattr(self.module,key))
Recommended Posts