पर्ल मुझे डेटा ब्लॉक की शुरुआत को चिह्नित करने के लिए __DATA__
टोकन का उपयोग करने की अनुमति देता है। मैं डेटा फ़ाइलhandle का उपयोग कर डेटा पढ़ सकते हैं। एक स्क्रिप्ट में डेटा ब्लॉक स्टोर करने के लिए पाइथोनिक तरीका क्या है?पाइथन लिपि में डेटा ब्लॉक स्टोर करने का पाइथोनिक तरीका क्या है?
उत्तर
यह आपके डेटा पर निर्भर करता है, लेकिन dict literalals और multi-line स्ट्रिंग्स वास्तव में दोनों अच्छे तरीके हैं।
from StringIO import StringIO
textdata = """\
Now is the winter of our discontent,
Made glorious summer by this sun of York.
"""
# in place of __DATA__ = open('richard3.txt')
__DATA__ = StringIO(textdata)
for d in __DATA__:
print d
__DATA__.seek(0)
print __DATA__.readline()
प्रिंटों:
state_abbr = {
'MA': 'Massachusetts',
'MI': 'Michigan',
'MS': 'Mississippi',
'MN': 'Minnesota',
'MO': 'Missouri',
}
gettysburg = """
Four score and seven years ago,
our fathers brought forth on this continent
a new nation,
conceived in liberty
and dedicated to the proposition
that all men are created equal.
"""
यदि यह बाइनरी डेटा (यानी कोई बाइट्स और कोई टेक्स्ट नहीं है) तो आप बी के साथ स्ट्रिंग को उपसर्ग करके भी शामिल कर सकते हैं। Ie: बी "\ x00 \ x01 \ x16 \ x38"। इसका उपयोग क्यूटी द्वारा संसाधन फ़ाइलों को शामिल करने के लिए किया जाता है उदाहरण के लिए – Voo
@Voo: बी उपसर्ग ऐसा नहीं करता है। इसे पायथन 2 में अनदेखा किया गया है, और पायथन 3 में स्ट्रिंग (यूनिकोड) शाब्दिक के बजाय बाइट्स शाब्दिक बनाने का मतलब है। बाइनरी डेटा को शामिल किया जा सकता है क्योंकि हेक्स एक नियमित अन-प्रीफिक्स्ड स्ट्रिंग में बस ठीक है। –
ओह ठीक है, पायथन 3 मोड में था। निश्चित रूप से पाइथन 2 में "स्ट्रिंग्स" उपसर्ग के साथ शुरू करने के लिए यूनिकोड नहीं हैं, इससे ज्यादा समझ नहीं आएगी। लेकिन क्या आपको वास्तव में एक पायथन 3 स्ट्रिंग में अवैध यूनिकोड कोडपॉइंट्स शामिल करने की अनुमति है? यह आश्चर्यजनक है, खासकर जब बाइट्स से रूपांतरण (जैसे सॉकेट से पढ़ा जाता है) यूनिकोड में वास्तव में जांच करता है कि यह समझ में आता है या नहीं। – Voo
एक में स्रोत फ़ाइल की तरह वस्तु बनाने के लिए StringIO मॉड्यूल का उपयोग करें
Now is the winter of our discontent,
Made glorious summer by this sun of York.
Now is the winter of our discontent,
(मैं तो बस इस __DATA__
कहा जाता है अपने मूल प्रश्न से तालमेल अभ्यास में, यह अच्छा पायथन नामकरण शैली नहीं होगी - datafile
जैसे कुछ अधिक उपयुक्त होंगे।)
मानक जादू विधियों के अलावा कुछ भी के लिए डबल अंडरस्कोर नामों का उपयोग न करें। – agf
पर्ल के __DATA__
परिवर्तनीय Google से परिचित नहीं है Google मुझे बता रहा है कि इसे अक्सर परीक्षण के लिए उपयोग किया जाता है। मान लें कि आप अपने कोड का परीक्षण करने की भी तलाश कर रहे हैं, आप सबसे अच्छे (http://docs.python.org/library/doctest.html) पर विचार करना चाहेंगे। उदाहरण के लिए,
import StringIO
__DATA__ = StringIO.StringIO("""lines
of data
from a file
""")
मान लिया जाये कि आप आंकड़े चाहता था एक फ़ाइल वस्तु है कि अब आप क्या मिल गया है और आप सबसे अधिक अन्य फ़ाइल वस्तुओं आगे जाने की तरह उपयोग कर सकते हैं होने के लिए के बजाय के लिए। उदाहरण के लिए:
if __name__=="__main__":
# test myfunc with test data:
lines = __DATA__.readlines()
myfunc(lines)
लेकिन अगर आंकड़े का केवल उपयोग के परीक्षण के लिए है तो आप शायद एक doctest बनाने या PyUnit/नाक में एक टेस्ट केस लेखन से बेहतर कर रहे हैं।
उदाहरण के लिए:
import StringIO
def myfunc(lines):
r"""Do something to each line
Here's an example:
>>> data = StringIO.StringIO("line 1\nline 2\n")
>>> myfunc(data)
['1', '2']
"""
return [line[-2] for line in lines]
if __name__ == "__main__":
import doctest
doctest.testmod()
इस तरह उन परीक्षण चल रहा है:
$ python ~/doctest_example.py -v
Trying:
data = StringIO.StringIO("line 1\nline 2\n")
Expecting nothing
ok
Trying:
myfunc(data)
Expecting:
['1', '2']
ok
1 items had no tests:
__main__
1 items passed all tests:
2 tests in __main__.myfunc
2 tests in 2 items.
2 passed and 0 failed.
Test passed.
Doctest सादा पाठ फ़ाइलों में अजगर परीक्षण खोजने और उन्हें चलने सहित विभिन्न चीजों की एक बहुत कुछ करता है। निजी तौर पर, मैं एक बड़ा प्रशंसक नहीं हूं और अधिक संरचित परीक्षण दृष्टिकोण (import unittest
) पसंद करता हूं लेकिन यह स्पष्ट रूप से कोड कोड का परीक्षण करने के लिए एक पाइथोनिक तरीका है।
आईएमओ यह डेटा के प्रकार पर निर्भर करता है: यदि आपके पास केवल टेक्स्ट है और यह सुनिश्चित हो सकता है कि कोई भी मौका नहीं है, तो आप "" या "" "नहीं हैं, तो आप इस संग्रह का उपयोग करने के इस संस्करण का उपयोग कर सकते हैं पाठ। लेकिन यदि आप चाहते हैं तो क्या करना है, उदाहरण के लिए, कुछ टेक्स्ट स्टोर करें जहां यह ज्ञात है कि '' 'या "" "वहां मौजूद है या हो सकता है? तो फिर यह
- या तो करने के लिए adviseable है डेटा किसी भी तरह से कोडित या स्टोर
- एक अलग फाइल में रख
उदाहरण: पाठ है
वहाँ कई हैं ' पायथन पुस्तकालयों में और "" "है।
इस मामले में, इसे ट्रिपल कोट के माध्यम से करना मुश्किल हो सकता है। तो आप
__DATA__ = """There are many '''s and \"""s in Python libraries.""";
print __DATA__
लेकिन टेक्स्ट संपादित करने या बदलने के दौरान आपको ध्यान देना होगा। इस मामले में, यह
$ python -c 'import sys; print sys.stdin.read().encode("base64")'
There are many '''s and """s in Python libraries.<press Ctrl-D twice>
करने के लिए और अधिक उपयोगी हो सकता है तो आप
VGhlcmUgYXJlIG1hbnkgJycncyBhbmQgIiIicyBpbiBQeXRob24gbGlicmFyaWVzLg==
आउटपुट के रूप में
मिलता है। इसे लें और इसे अपनी स्क्रिप्ट में रखें, जैसे
__DATA__ = 'VGhlcmUgYXJlIG1hbnkgJycncyBhbmQgIiIicyBpbiBQeXRob24gbGlicmFyaWVzLg=='.decode('base64')
print __DATA__
और परिणाम देखें।
- 1. चर घोषित करने का पाइथोनिक तरीका क्या है?
- 2. पाइथन लिपि
- 3. पाइथन लिपि
- 4. एंडियननेस निर्धारित करने का सबसे पाइथोनिक तरीका क्या है?
- 5. पाइथन लिपि
- 6. पाइथन लिपि
- 7. hbase में पदानुक्रमित डेटा स्टोर करने का सबसे अच्छा तरीका
- 8. एकाधिक फ़ाइलों से डेटा को एक सरणी में डेटा आयात करने के लिए पाइथोनिक तरीका
- 9. tuples unpack करने के लिए पाइथोनिक तरीका क्या है?
- 10. एक पाइथन लिपि
- 11. PHP स्क्रिप्ट पाइथन लिपि
- 12. विंडोज़ में पाइथन से दूसरे एप्लिकेशन में डेटा स्थानांतरित करने का सबसे अच्छा तरीका क्या है?
- 13. मॉड्यूल और पैकेज व्यवस्थित करने का पाइथोनिक तरीका
- 14. जावा में ऐप के conf डेटा को स्टोर करने का उचित तरीका क्या है?
- 15. सी # में स्थिर डेटा स्टोर करने का सबसे अच्छा तरीका क्या है जो
- 16. क्या SQLite में एक (अद्वितीय) डेटा तत्व स्टोर करने का कोई तरीका है?
- 17. क्या एक हैशटेबल वैरिएबल में एकाधिक डेटा प्रकारों को स्टोर करने का कोई तरीका है?
- 18. डेटाबेस में एकल गैर-दोहराने वाले डेटा को स्टोर करने का सबसे अच्छा तरीका क्या है?
- 19. सशर्त चर प्रारंभिकरण का पाइथोनिक तरीका क्या है?
- 20. क्या पाइथन में एक ज्ञापन सजावट के लिए कीवर्ड तर्कों का समर्थन करने के लिए एक पाइथोनिक तरीका है?
- 21. आईपीथन: मैं पाइथन लिपि
- 22. निजी चर का उपयोग करने के लिए पाइथोनिक तरीका क्या है?
- 23. Django में डेटा को denormalize करने का सबसे अच्छा तरीका?
- 24. * .py में डेटा संग्रहीत करने का तरीका क्या है?
- 25. रुझान डेटा संग्रहीत करने का सबसे अच्छा तरीका क्या है?
- 26. एक साधारण एफएसएम लागू करने के लिए पाइथोनिक तरीका क्या है?
- 27. एंड्रॉइड-एप पर 'पसंदीदा' जैसे डेटा स्टोर करने का सबसे अच्छा तरीका क्या है?
- 28. दो आईओएस कोर डेटा निरंतर स्टोर मर्ज करने का एक प्रभावी तरीका क्या है?
- 29. क्या एक पायथन लिपि में निर्भरताओं को एम्बेड करने का कोई तरीका है?
- 30. डेटा के विभिन्न संस्करणों को स्टोर करने का पसंदीदा तरीका क्या है?
इसे एक अलग फ़ाइल (मॉड्यूल) में रखें और इसे आयात करें। इनलाइन मत करो। – agf
@agf - मैं असहमत हूं। स्ट्रिंगियो में लिपटे एक तिहाई-उद्धृत स्ट्रिंग का उपयोग करके फ़ाइल जैसी ऑब्जेक्ट को रेखांकित करना एक पोर्टेबल और स्वयं निहित परीक्षण केस या डेमो स्क्रिप्ट के लिए बनाता है। – PaulMcG
धन्यवाद! Stackoverflow समुदाय अद्भुत है! –