बैश चर वास्तव में वातावरण चर रहे हैं। आप उन्हें एक शब्दकोश-जैसे इंटरफ़ेस के साथ os.environ ऑब्जेक्ट के माध्यम से प्राप्त करते हैं। ध्यान दें कि बैश में दो प्रकार के चर हैं: वर्तमान प्रक्रिया के लिए स्थानीय, और जो बच्चे प्रक्रियाओं द्वारा विरासत में हैं। आपकी पायथन लिपि एक बाल प्रक्रिया है, इसलिए आपको यह सुनिश्चित करने की ज़रूरत है कि आप export
वैरिएबल चाहते हैं कि आप बाल प्रक्रिया को एक्सेस करना चाहते हैं।
अपने मूल प्रश्न का उत्तर देने के लिए, आपको पहले चर को निर्यात करने की आवश्यकता है और फिर इसे os.environ
का उपयोग करके पायथन स्क्रिप्ट के भीतर से एक्सेस करना होगा।
##!/bin/bash
#$ -V
#$ -cwd
#$ -o $HOME/sge_jobs_output/$JOB_ID.out -j y
#$ -S /bin/bash
#$ -l mem_free=4G
c=$SGE_TASK_ID
cd /home/xxx/scratch/test/
export FILENAME=`head -$c testlist|tail -1`
chmod +X testpython.py
./testpython.py
#!/bin/python
import sys
import os
for arg in sys.argv:
print arg
f=open('/home/xxx/scratch/test/' + os.environ['FILENAME'],'r').readlines()
print f[1]
वैकल्पिक रूप से, आप चर को कमांड लाइन तर्क के रूप में पास कर सकते हैं, जो आपका कोड अब कर रहा है। उस स्थिति में, आपको sys.argv
में देखना होगा, जो आपकी स्क्रिप्ट में दिए गए तर्कों की सूची है। वे उसी क्रम में sys.argv
में दिखाई देते हैं, जिसे आपने स्क्रिप्ट का आह्वान करते समय निर्दिष्ट किया था। sys.argv[0]
में हमेशा चल रहे प्रोग्राम का नाम शामिल है। बाद की प्रविष्टियों में अन्य तर्क होते हैं। len(sys.argv)
स्क्रिप्ट प्राप्त तर्कों की संख्या इंगित करता है।
#!/bin/python
import sys
import os
if len(sys.argv) < 2:
print 'Usage: ' + sys.argv[0] + ' <filename>'
sys.exit(1)
print 'This is the name of the python script: ' + sys.argv[0]
print 'This is the 1st argument: ' + sys.argv[1]
f=open('/home/xxx/scratch/test/' + sys.argv[1],'r').readlines()
print f[1]
'argparse' मॉड्यूल का कौन सा हिस्सा आपको भ्रमित करता है? http://docs.python.org/dev/library/argparse.html। यह आपके कोड के साथ होने वाली समस्या पर अधिक ** विशिष्ट ** प्रश्न पूछने में मदद करता है। कृपया 'argparse' का उपयोग करके कोड पोस्ट करें और विशिष्ट प्रश्न पूछें। –
इसे कमांड लाइन पैरामीटर के रूप में पास करें और फिर इसे sys.argv से बाहर खींचें। – GreenMatt