2012-09-12 16 views
7

मुझे एक एसवीएन प्री-प्रतिबद्ध हुक को लागू करने की आवश्यकता है जो एक स्क्रिप्ट निष्पादित करता है जो स्वयं एसवीएन में संग्रहीत होता है।एक स्क्रिप्ट के लिए पाइप STDIN जिसे पाइथन दुभाषिया को पाइप किया जा रहा है?

svn cat file://$REPO/trunk/my_script.py | python - --argument1 --argument2 

हालांकि, my_script.py ही डेटा STDIN पर पहुंचाया जा करने के लिए की आवश्यकता है:

मैं पाइप कि अजगर दुभाषिया के लिए स्क्रिप्ट, के रूप में इस प्रकार के svn cat आदेश का उपयोग कर सकते हैं।

वह डेटा किसी फ़ाइल में संग्रहीत नहीं है; यह नेटवर्क पर संग्रहीत है। मैं एक अस्थायी फ़ाइल के लिए डेटा डाउनलोड करने के लिए देखना पसंद नहीं करते हैं, के रूप में सामान्य रूप से मैं इसे एक अजगर कार्यक्रम के लिए पाइप किए जा सकेंगे:

curl http://example.com/huge_file.txt | python my_script.py 

मैं इन पाइपों के दोनों गठबंधन करने के लिए कैसे यकीन नहीं है।

+0

के बराबर होगा आप उपयोग कर '>' की कोशिश की? –

+0

फ़ाइल में पढ़ने के लिए pysvn का उपयोग करने वाली एक रैपर स्क्रिप्ट लिखें, फिर संकलित करें और इसे निष्पादित करें, इसलिए आपका stdin निःशुल्क है? – agf

उत्तर

10

मुझे पता चला कि बिना किसी अस्थायी फ़ाइलों को बनाने के इसे कैसे किया जाए, लेकिन "पाइप" के साथ सख्ती से नहीं।

curl http://example.com/huge_file.txt | python <(svn cat file://$REPO/trunk/my_script.py) --argument1 --argument2

मैं "गुमनाम फ़ाइल वर्णनकर्ता" बैश में निर्माण, जो किसी भी फ़ाइल पथ के स्थान पर इस्तेमाल किया जा सकता का इस्तेमाल किया।

उदा। python my_script.py python <(cat my_script.py)

0

मुझे नहीं लगता कि यह संभव है। आप स्क्रिप्ट को पाइथन दुभाषिया को मानक इनपुट के रूप में खिलाते हैं। इसका मतलब है कि पाइथन दुभाषिया पहले से ही एक इनपुट स्ट्रीम से जुड़ा हुआ है। मुझे नहीं लगता कि स्क्रिप्ट सामग्री पढ़ने के लिए एक दूसरा मानक इनपुट बना सकती है।

संबंधित मुद्दे