Es gibt viele Möglichkeiten, wie oben aufgeführt, aber ich finde, dass ich nur den Inhalt einer Datei importieren wollen, und nicht Zeilen über Zeilen schreiben und importieren müssen andere Module. Also habe ich einen Weg gefunden, den Inhalt einer Datei zu erhalten, sogar mit der Punktsyntax ( file.property
), anstatt die importierte Datei mit der eigenen zusammenzuführen.
Zunächst einmal, hier ist meine Datei, die ich importieren werde, data.py
testString= "A string literal to import and test with"
注 Sie könnten die .txt
stattdessen die Erweiterung.
Sur mainfile.py
beginnen Sie mit dem Öffnen und der Entnahme des Inhalts.
#!usr/bin/env python3
Data=open('data.txt','r+').read()
Jetzt haben Sie den Inhalt als Zeichenkette, aber der Versuch, auf data.testString
wird einen Fehler verursachen, da data
ist eine Instanz der str
Klasse, und selbst wenn sie eine Eigenschaft hat testString
wird es nicht das tun, was Sie erwartet haben.
Als nächstes erstellen Sie eine Klasse. Zum Beispiel (Wortspiel beabsichtigt), ImportedFile
class ImportedFile:
Und fügen Sie dies ein (mit der entsprechenden Einrückung):
exec(data)
Und schließlich, neu zuweisen data
etwa so:
data=ImportedFile()
Und das war's! Greifen Sie einfach wie bei jedem anderen Modul zu und geben Sie print(data.testString)
wird auf der Konsole ausgegeben A string literal to import and test with
.
Wenn Sie jedoch das Äquivalent von from mod import *
lassen Sie einfach die Klasse und die Instanzzuweisung weg und deaktivieren Sie die exec
.
Ich hoffe, das hilft:)
-Benji