Beim Lesen einer Python-basierten Software bin ich verwirrt über eine Zeile mit Python-Code: path = sys.modules[self.__class__.__module__].__file__
.Verstehen und testen [self._class _._ module _] ._ file_
Ich kann erraten, es wurde versucht, den Dateinamen in der Klassendatei zurückzugeben, aber ich bin nicht sehr klar über die genaue Verwendung von diesem. Ich speicherte das verwandte Code-Segment in einer Datei mit dem Namen test.py
und ich versuche, es durch python test.py
zu testen, aber es druckt nichts. Wie kann ich diese Art von Datei testen?
import os
import sys
class testloadfile:
def __init__(self, test_path=None):
if test_path is None:
path = sys.modules[self.__class__.__module__].__file__
# print path
path = os.path.abspath(os.path.join(path, os.pardir))
# print path
path = os.path.join(path, "test.r")
print(path)
test_path = path
print("r file loaded")
Offhand, ich sehe hier keine "Main" -Routine ", die eine * Kommandozeilen (!) * Ausführung von' Python "erwarten würde. Hier definieren Sie "eine Klasse", und Sie definieren einen Konstruktor für diese Klasse, * und * es scheint, dass Sie auch eine 'print'-Anweisung eingefügt haben, aber ich sehe hier nichts, was' python' sagt was getan werden soll, wenn diese '.py' Datei von der Kommandozeile ausgeführt wird. Daher bin ich nicht überrascht, dass es nichts tut. **: -) ** "Geh jetzt, und sieh dir das an", bei einem existierenden Python * (Bibliothek) * Code. Beachte, was sie tun, und tue auch dich. –
Das ist wirklich bizarr ... Es scheint, als würde 'sys.modules [self .__ class __.__ Modul __] .__ file__' Ihnen einfach' __file__' geben ... – mgilson
Was ist die richtige Einrückungsebene des endgültigen 'print'? Ist es Teil der 'class' Definition oder Teil der' __init __() 'Methode - weil es wie gepostet ein Einrückungsfehler ist. – martineau