Perl und Ruby __END__
. Dies ist praktisch, da Sie am Ende des Programms relativ große Textdaten einfügen können. Es kann jedoch nicht in Python verwendet werden. Es gibt eine mehrzeilige Zeichenfolge, die jedoch nicht befolgt werden kann.
Also habe ich ein Modul erstellt, das "Daten" lesen kann, indem man so etwas am Ende setzt.
'''
__END__
Daten
'''
Obwohl die Anführungszeichen sowohl "" "als auch" "" "entsprechen, kann nicht dasselbe in den Datenteil geschrieben werden. Es ist unvollständig, aber es scheint im Moment schwierig zu verbessern Dinge veröffentlichen.
Kompatibel mit beiden Python 2/3 (es scheint mit PyPy zu funktionieren).
enddata.py
import sys
from io import StringIO
def getdata():
ret = StringIO()
with open(sys._getframe().f_back.f_code.co_filename,'rb') as f:
strStart = None
while True:
line = f.readline()
if not line or line.rstrip().decode('utf-8') == '__END__':
break
strStart = line.rstrip()
# read until the str finishes as ret should not contain trailing quote
prev = None
while True:
line = f.readline()
if not line or line.rstrip() == strStart.rstrip():
break
if prev is not None:
ret.write(prev)
prev = line.decode('utf-8')
if prev is not None:
ret.write(prev)
ret.seek(0)
return ret
test.py
#!/usr/bin/python
from enddata import getdata
print(getdata().read().rstrip())
'''
__END__
Hello END World!
'''
Hallo ENDE Welt!
Wird ausgegeben.
Recommended Posts