Erreiche __END__ in Python

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

Erreiche __END__ in Python
Python in der Optimierung
CURL in Python
Metaprogrammierung mit Python
Python 3.3 mit Anaconda
Geokodierung in Python
Metaanalyse in Python
Unittest in Python
Epoche in Python
Zwietracht in Python
Deutsch in Python
DCI in Python
Quicksort in Python
nCr in Python
N-Gramm in Python
Programmieren mit Python
Plink in Python
Konstante in Python
FizzBuzz in Python
Schritt AIC in Python
LINE-Bot [0] in Python
CSV in Python
Reverse Assembler mit Python
Reflexion in Python
Konstante in Python
nCr in Python.
Format in Python
Scons in Python 3
Puyopuyo in Python
Python in Virtualenv
PPAP in Python
Quad-Tree in Python
Reflexion in Python
Chemie mit Python
Hashbar in Python
DirectLiNGAM in Python
LiNGAM in Python
In Python reduzieren
In Python flach drücken
Start / End-Match im regulären Python-Ausdruck
Täglicher AtCoder # 36 mit Python
Clustertext in Python
Täglicher AtCoder # 32 in Python
Täglicher AtCoder # 6 in Python
Täglicher AtCoder # 18 in Python
Bearbeiten Sie Schriftarten in Python
Singleton-Muster in Python
Dateioperationen in Python
Lesen Sie DXF mit Python
Täglicher AtCoder # 53 in Python
Tastenanschlag in Python
Verwenden Sie config.ini mit Python
Löse ABC168D in Python
Täglicher AtCoder # 7 in Python
LU-Zerlegung in Python
Ein Liner in Python
Einfacher gRPC in Python
AtCoder # 24 jeden Tag mit Python