2011-04-07 5 views
11

में मौजूद नहीं है हमारी टीम को कुछ परिस्थितियों में पायथन 2.4.1 का उपयोग करने की आवश्यकता है। एक ओर जहां यह लिखे, मैं इसे 2.4.1 के समय मॉड्यूल में पायाdatetime.datetime.strptime पायथन 2.4.1

Python 2.6.6 (r266:84297, Aug 24 2010, 18:46:32) [MSC v.1500 32 bit (Intel)] on win32 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import datetime 
>>> datetime.datetime.strptime 
<built-in method strptime of type object at 0x1E1EF898> 

: strptime अजगर 2.4.1 में datetime.datetime मॉड्यूल में मौजूद नहीं है:

Python 2.4.1 (#65, Mar 30 2005, 09:13:57) [MSC v.1310 32 bit (Intel)] 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import datetime 
>>> datetime.datetime.strptime 
Traceback (most recent call last): 
    File "<string>", line 1, in <fragment> 
AttributeError: type object 'datetime.datetime' has no attribute 'strptime' 

के रूप में 2.6 में करने का विरोध किया :

Python 2.4.1 (#65, Mar 30 2005, 09:16:17) [MSC v.1310 32 bit (Intel)] 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import time 
>>> time.strptime 
<built-in function strptime> 

मुझे लगता है कि strptime किसी बिंदु पर स्थानांतरित हो गया? इस तरह की चीजों की जांच करने का सबसे अच्छा तरीका क्या है। मैंने अजगर के रिलीज इतिहास को देखने की कोशिश की लेकिन कुछ भी नहीं मिला।

उत्तर

18

ध्यान दें कि strptime अभी भी time मॉड्यूल में 2.7.1 के साथ-साथ datetime में भी है।

अगर, हालांकि, आप documentation for datetime पर हाल के संस्करण में देखें, तो आप strptime के तहत इस देखेंगे:

यह datetime(*(time.strptime(date_string, format)[0:6]))

के बराबर है तो आप के बजाय कि अभिव्यक्ति का उपयोग कर सकते हैं। ध्यान दें कि एक ही प्रविष्टि "संस्करण 2.5 में नया" भी कहती है।

+0

सब कुछ बताते हैं कि - मैंने सोचा कि मैंने यह देखने के लिए प्रलेखन की जांच की है कि यह कब पेश किया गया था, लेकिन मुझे स्पष्ट रूप से याद आया। धन्यवाद! – Nathan

1

नई विधियों को आम तौर पर "संस्करण के बाद से समाचार" के साथ लाइब्रेरी संदर्भ में दस्तावेज किया जाता है। मुझे याद नहीं है कि विधियां गायब हो गई हैं या हटा दी गई हैं ... जो पिछड़ी संगतता खराब होगी। हटाने के अधीन तरीके आमतौर पर एक अस्वीकृति चेतावनी के साथ बहिष्कृत अधिकारी हैं।

11

मुझे भी इसी तरह की समस्या थी।

डैनियल जवाब के आधार पर, यह मेरे लिए काम करता है जब आप वाकई जो अजगर संस्करण (2.4 बनाम 2.6) के तहत स्क्रिप्ट चलाने की जाएगी नहीं कर रहे हैं:

from datetime import datetime 
import time 

if hasattr(datetime, 'strptime'): 
    #python 2.6 
    strptime = datetime.strptime 
else: 
    #python 2.4 equivalent 
    strptime = lambda date_string, format: datetime(*(time.strptime(date_string, format)[0:6])) 

print strptime("2011-08-28 13:10:00", '%Y-%m-%d %H:%M:%S') 

फाई