In Python können Skripte mit ** Bindestrich (-) ** im Dateinamen keine Anweisungen importieren. Wenn ich jedoch den Dateinamen wirklich mit Bindestrichen importieren möchte, um einen Test zu schreiben, habe ich herausgefunden, was zu tun ist. Machen Sie sich also eine Notiz.
__import__
** \ _ \ _ import \ _ \ _ ** nimmt den Pfadnamen der Datei als Argument und gibt das Modul der Datei zurück.
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
Jetzt können Sie problemlos auch Dateien mit Bindestrichen importieren.
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