मैं 32-बिट विंडोज 7 और पायथन 2.7 चला रहा हूं।पायथन कमांड लाइन तर्क (विंडोज)
मैं एक कमांड लाइन पायथन लिपि लिखने की कोशिश कर रहा हूं जो सीएमडी से चल सकता है। मैं sys.argv [1] के लिए एक मान असाइन करने की कोशिश कर रहा हूँ। मेरी स्क्रिप्ट का उद्देश्य फ़ाइल के MD5 हैश मान की गणना करना है। यह फ़ाइल तब इनपुट की जाएगी जब स्क्रिप्ट को कमांड लाइन में बुलाया जाता है और इसलिए, sys.argv [1] को धोने के लिए फ़ाइल का प्रतिनिधित्व करना चाहिए।
यहाँ नीचे मेरी कोड है:
import sys
import hashlib
filename = sys.argv[1]
def md5Checksum(filePath):
fh = open(filePath, 'rb')
m = hashlib.md5()
while True:
data = fh.read(8192)
if not data:
break
m.update(data)
return m.hexdigest()
# print len(sys.argv)
print 'The MD5 checksum of text.txt is', md5Checksum(filename)
whenver मैं इस स्क्रिप्ट को चलाने, मैं एक त्रुटि प्राप्त:
filename = sys.argv[1]
IndexError: list index out of range
मेरी स्क्रिप्ट कॉल करने के लिए, मैं लिख दिया है "script.py test.txt " उदाहरण के लिए। स्क्रिप्ट और स्रोत फ़ाइल दोनों एक ही निर्देशिका में हैं। मैंने लेन (sys.argv) का परीक्षण किया है और यह केवल एक मान के रूप में वापस आता है, जो कि अजगर स्क्रिप्ट नाम है।
कोई सुझाव? मैं केवल यह मान सकता हूं कि मैं सीएमडी
आपके पास एक लटकती खुली फ़ाइल हैंडल है। 'ओपन (फ़ाइलपाथ,' आरबी ') के साथ'h' के रूप में उपयोग करें, इसके बजाय। – wim
अधिक जानकारी के लिए http://stackoverflow.com/questions/2640971/windows-is-not-passing-command-line-arguments-to-python-programs-executed-from-t# देखें – laike9m