मैं एक प्रोग्राम लिखना चाहता हूं जो stdin (unbuffered) पढ़ता है और stdout (unbuffered) लिखता है कुछ छोटे चार-चार-चार परिवर्तन कर रहा है। उदाहरण के लिए मान लें कि मैं stdin से सभी वर्ण x
को हटाना चाहता हूं।मैं अजगर में यूनिक्स फ़िल्टर कैसे लिखूं?
उत्तर
मैं बिल्कुल नहीं जानते कि तुम इस संदर्भ में बफ़र से क्या मतलब है, लेकिन यह काफी है कि तुम क्या कह रहे हैं क्या करने के लिए सरल है ...
so_gen.py (एक निरंतर प्रवाह है कि हम देख सकते हैं पैदा) :
import time
import sys
while True:
for char in 'abcdefx':
sys.stdout.write(char)
sys.stdout.flush()
time.sleep(0.1)
so_filter.py (कर आप क्या पूछना):
import sys
while True:
char = sys.stdin.read(1)
if not char:
break
if char != 'x':
sys.stdout.write(char)
sys.stdout.flush()
को देखने के लिए वह क्या करता है python so_gen.py | python so_filter.py
चलाने की कोशिश करें।
sys.stdin
से पढ़ें और sys.stdout
पर लिखें (या print
का उपयोग करें)। आपका उदाहरण कार्यक्रम:
import sys
for line in sys.stdin:
print line.replace("x", ""),
वहाँ unbuffered stdin बनाने के लिए एक मानक तरीका नहीं है, और आपको लगता है कि नहीं करना चाहती। ओएस इसे बफर करने दें।
उन्होंने "unbuffered" कहा लेकिन मुझे यकीन नहीं है कि यह वास्तव में मायने रखता है। –
मैंने आपके उत्तर को संपादित करते समय संपादित किया। लेखन 'नहीं तो चार के लिए –
आप fileinput
class है, जो आप की प्रक्रिया पर्ल हीरा ऑपरेटर की तरह आदानों होगा की सुविधा देता है का उपयोग कर सकते हैं। दस्तावेज़ों से:
import fileinput
for line in fileinput.input():
process(line)
जहां प्रक्रिया print line.replace('x','')
जैसी कुछ करता है।
आप कैसे stdout unbuffer करने के लिए this StackOverflow question पालन कर सकते हैं। या आप प्रत्येक print
के बाद sys.stdout.flush()
पर कॉल कर सकते हैं।
आह! यह मेरे द्वारा किए जा रहे सभी अतिरिक्त काम करता है क्योंकि मुझे पर्ल याद नहीं आया! मुझे पाइथन मानक पुस्तकालय के माध्यम से बहुत बारीकी से जाना होगा। –
सभी पढ़ता है और unbuffered लिखते हैं बनाने के लिए अजगर दुभाषिया के लिए -u स्विच का उपयोग करें। पर्ल में $| = true;
सेट करने के समान। फिर आगे बढ़ें, इसे संशोधित करने वाली रेखा को पढ़ना और फिर इसे प्रिंट करना। sys.stdout.flush() आवश्यक नहीं है।
#!/path/to/python -u
import sys
for line in sys.stdin:
process_line(line)
यहां काम नहीं कर रहा है ... –
- 1. मैं सी में एक फ़िल्टर प्रोग्राम कैसे लिखूं?
- 2. मैं पायथन में "टैब" कैसे लिखूं?
- 3. मैं SpecFlow फ़ीचर में टिप्पणियां कैसे लिखूं?
- 4. मैं जावा में फेसबुक ऐप्स कैसे लिखूं?
- 5. मैं नैन्सीएफएक्स में स्ट्रीम आउटपुट कैसे लिखूं?
- 6. मैं फ़ायरफ़ॉक्स एडन कैसे लिखूं?
- 7. मैं पाइथन में कच्चे बाइनरी डेटा कैसे लिखूं?
- 8. यूनिक्स
- 9. मैं जावा ईई/ईजेबी सिंगलटन कैसे लिखूं?
- 10. मैं एक साधारण एसएसएच क्लाइंट कैसे लिखूं?
- 11. मैं कार्य कैसे लिखूं? (समांतर कोड)
- 12. मैं gzipped फ़ाइलों को कैसे पढ़/लिखूं?
- 13. मैं एक स्वच्छ रूबी मिश्रण कैसे लिखूं?
- 14. मैं पर्ल में गठबंधन कॉलम में टेक्स्ट कैसे लिखूं?
- 15. मैं कैसे लिखूं: अन्यथा क्लोजर में शंकु में?
- 16. मैं एक std :: codecvt facet कैसे लिखूं?
- 17. मैं रिकर्सिव अनाम फ़ंक्शन कैसे लिखूं?
- 18. मैं इसे अलग तरीकों से कैसे लिखूं?
- 19. कैसे मैं अजगर
- 20. मैं कंसोल पर एक ही स्थान पर आउटपुट कैसे लिखूं?
- 21. मैं फ़िल्टर
- 22. मैं कंसोल में अंतिम पंक्ति पर कैसे लिखूं?
- 23. मैं जावा में एक सही माइक्रो-बेंचमार्क कैसे लिखूं?
- 24. मैं LEX/FLEX में एक गैर लालची मैच कैसे लिखूं?
- 25. मैं जावास्क्रिप्ट में एक विस्तार विधि कैसे लिखूं?
- 26. जावा - मैं एक निर्दिष्ट निर्देशिका में एक फ़ाइल कैसे लिखूं
- 27. हास्केल में प्रतीक के योग्य नाम को मैं कैसे लिखूं?
- 28. मैं वीबी 10 में निजी सेट ऑटो-प्रॉपर्टी कैसे लिखूं?
- 29. मैं एक फ़ाइल में एक एक्सएमएल स्ट्रिंग कैसे लिखूं?
- 30. मैं एक गिट भंडार में कम्यूटर नाम कैसे लिखूं?
विजेता: break' – flybywire
@flybywire: उनका जवाब यह आवश्यक, कोई अन्य जवाब था ... –