गोले में फ़ाइलों के साथ काम करने और एक कार्यक्रम से दूसरे में डेटा प्राप्त करने (डेटा पाठ है) के लिए विशिष्ट विशेषताएं हैं। उन कार्यों के लिए, शेल स्क्रिप्ट पाइथन जैसी स्क्रिप्टिंग भाषा की तुलना में कम बोझिल हो सकती है।
शेल स्क्रिप्टिंग का यह भी लाभ है कि आपके द्वारा उपयोग की जाने वाली कमांड मूल रूप से वही कमांड्स हैं जो आप कमांड लाइन से उपयोग करेंगे - इसलिए यदि आप शेल में कुछ कर सकते हैं, तो आप उसी ऑपरेशन को स्क्रिप्ट करने के लिए आधे से अधिक हैं।
यहां उदाहरण के लिए एक बैश स्क्रिप्ट है जो वर्तमान निर्देशिका से सभी पीएनजी फाइलों को एक निर्दिष्ट निर्देशिका में ले जाती है।
#!/usr/bin/sh
mv *.png $1
यहाँ एक पायथन संस्करण है।
#!/usr/bin/python
import sys, shutil, glob
for filename in glob.iglob("./*.png"):
shutil.move(filename, sys.argv[1])
आप देखेंगे:
- बैश लिपि एक तीसरी है जब तक कि आप पंक्तियों को गिनते हैं जब तक कि आप (शेबंग लाइन को छोड़कर) - चरित्र की गिनती से भी कम
- पायथन लिपि को आयात करने के लिए तीन पुस्तकालयों की आवश्यकता होती है, जबकि इस कार्य के लिए आपको जो कुछ भी चाहिए वह मूल रूप से बैश में उपलब्ध है
- पायथन लिपि को फाइलों को स्थानांतरित करने के लिए एक स्पष्ट लूप की आवश्यकता होती है, जबकि यह
mv
बैश में कमांड के शब्दार्थ का हिस्सा होता है
- बैश स्क्रिप्ट तेजी से चल सकती है - आप शायद इसे बैश से मंगवाएंगे, और आप इसका उपयोग कर सकते हैं
source
इसे शेल के एक ही उदाहरण में चलाने के लिए
glob.iglob("./*.png")
सिर्फ कहने के लिए एक कौर है *.png
यदि आप पायथन में एक बुनियादी पाइप ऑपरेशन लिखना चाहते थे, तो आपको क्रियाशीलता पर आश्चर्य होगा। (बेशक, कुछ चीजें, जैसे पाइपिंग के माध्यम सेgrep
, बाहरी प्रोग्राम का उपयोग करने के बजाय पायथन कोड द्वारा प्रतिस्थापित किया जा सकता है, इसलिए आपको अक्सर बहुत अधिक पाइप करने की आवश्यकता नहीं होती है।)
एक प्रतिरूप के रूप में, मुझे एक बार एक दिनचर्या लिखनी थी, जिसमें यह देखने के लिए जाँच की गई थी कि प्रत्येक फ़ाइलनाम किसी विशेष निर्देशिका में कितने समय के लिए है। यदि वे किसी विशेष OS द्वारा समर्थित से अधिक लंबे थे, तो उन्हें छोटा किया जाना था। इसके परिणामस्वरूप डुप्लिकेट फ़ाइलनाम हो सकते हैं, जिन्हें मुझे सुधारने की आवश्यकता थी, और चूंकि वे एक वेब पेज से लिंक किए जाएंगे, छोटे नाम स्थिर होने की आवश्यकता है, अर्थात, उन्हें इस तरह से उत्पन्न किया जाना चाहिए कि एक ही लंबा फ़ाइल नाम हमेशा परिणाम होगा वही छोटा नाम। मैंने लंबे फ़ाइल नाम का एक हेक्स md5 उत्पन्न करके और संक्षिप्त नाम के पहले चार वर्णों को जोड़ दिया (नाम अभी भी टकरा सकते थे, लेकिन यह बहुत ही एकरूप था, इसलिए मैंने बस उस स्थिति की जाँच की और यदि ऐसा होना चाहिए तो) ।
मैंने इसे बैश में किया क्योंकि यह हमारे बिल्ड सिस्टम का हिस्सा था जो पहले से ही बैश में लिखा था। जैसा कि आप शायद सोच रहे हैं, ठीक से प्राप्त करना उतना ही कठिन था। पाइथन में लिखने में बहुत कम समय लगा होगा और शायद स्पष्ट भी हो गया होगा।
संक्षेप में: विभिन्न भाषाओं को विभिन्न प्रकार के कार्यों के लिए डिज़ाइन किया गया है; आपके लिए उपलब्ध भाषा को चुनें जो हाथ में काम के लिए सबसे उपयुक्त है।