Atteindre __END__ en Python

Perl et Ruby __END__. C'est pratique car vous pouvez mettre des données de texte raisonnablement volumineuses à la fin du programme. Cependant, il ne peut pas être utilisé en Python. Il existe une chaîne multiligne, mais elle ne peut pas être suivie.

Donc, j'ai fait un module qui peut lire des "données" en mettant une telle chose à la fin.

'''
__END__
Les données
'''

Cependant, bien que les guillemets correspondent à la fois à `` '' '' et à " "" , la même chose ne peut pas être écrite dans la partie données. Elle est incomplète, mais elle semble difficile à améliorer, donc pour le moment Publiez des choses.

Compatible avec les deux Python 2/3 (il semble fonctionner avec PyPy).

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!
'''

"Bonjour END World!"

Recommended Posts

Atteindre __END__ en Python
Python en optimisation
CURL en Python
Métaprogrammation avec Python
Python 3.3 avec Anaconda
Géocodage en python
Méta-analyse en Python
Unittest en Python
Époque en Python
Discord en Python
Allemand en Python
DCI en Python
tri rapide en python
nCr en python
N-Gram en Python
Programmation avec Python
Plink en Python
Constante en Python
FizzBuzz en Python
Étape AIC en Python
LINE-Bot [0] en Python
CSV en Python
Assemblage inversé avec Python
Réflexion en Python
Constante en Python
nCr en Python.
format en python
Scons en Python 3
Puyopuyo en python
python dans virtualenv
PPAP en Python
Quad-tree en Python
Réflexion en Python
Chimie avec Python
Hashable en Python
DirectLiNGAM en Python
LiNGAM en Python
Aplatir en Python
Aplatir en python
Match de début / fin dans l'expression régulière python
AtCoder # 36 quotidien avec Python
Texte de cluster en Python
Daily AtCoder # 32 en Python
Daily AtCoder # 6 en Python
Daily AtCoder # 18 en Python
Modifier les polices en Python
Motif singleton en Python
Opérations sur les fichiers en Python
Lire DXF avec python
Daily AtCoder # 53 en Python
Séquence de touches en Python
Utilisez config.ini avec Python
Résoudre ABC168D en Python
AtCoder # 7 tous les jours avec Python
Décomposition LU en Python
Une doublure en Python
GRPC simple en Python
AtCoder # 24 tous les jours avec Python