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