2013-01-24 11 views
14

os.path.curdir रिटर्न '। जो पूरी तरह से सच्चा और पूरी तरह बेकार है। इससे कुछ भी उपयोगी पाने के लिए, आपको इसे os.path.abspath(os.path.curdir)पाइथन में os.path.curdir क्यों है

के साथ लपेटना होगा os.path मॉड्यूल में बेकार चर शामिल क्यों करें? Os.path.curdir एक ऐसा फ़ंक्शन क्यों नहीं है जो आपके लिए os.path.abspath करता है?

क्या os.path.curdir के लिए मौजूद कुछ ऐतिहासिक कारण मौजूद हैं?

शायद बेकार थोड़ा कठोर है, लेकिन इसका वर्णन करने के लिए बहुत उपयोगी नहीं लगता है। enter image description here

+3

आप 'os.path.abspath (os.path.curdir) के बजाय' os.getcwd() 'चाहते हैं। –

उत्तर

26

यह os.path.sep जैसा स्थिर है।

POSIX और Windows के अलावा प्लेटफ़ॉर्म 'वर्तमान निर्देशिका' को इंगित करने के लिए एक अलग मान का उपयोग कर सकते हैं। रिस्क ओएस पर यह @ उदाहरण के लिए, पुराने मैकिंतोश ओएस पर यह : है।

मूल्य मानक लाइब्रेरी में प्लेटफार्म अज्ञेय रहने के लिए उपयोग किया जाता है।

इसके बजाय os.getcwd() का उपयोग करें; os.path.abspath() वैसे भी उस कार्य का उपयोग os.path.curdir को चालू कार्य निर्देशिका में बदलने के लिए करता है।

def abspath(path): 
    """Return an absolute path.""" 
    if not isabs(path): 
     if isinstance(path, _unicode): 
      cwd = os.getcwdu() 
     else: 
      cwd = os.getcwd() 
     path = join(cwd, path) 
    return normpath(path) 
+0

हाँ, मैं भूल गया था कि कुछ ओएस के पास '।' नहीं है। curdir के रूप में। धन्यवाद। – boatcoder

5

यह सिर्फ एक स्थिर, मंच पर निर्भर मूल्य है: यहाँ abspath() की POSIX कार्यान्वयन है। the docs (जो पढ़ने योग्य हैं):

ऑपरेटिंग सिस्टम द्वारा वर्तमान निर्देशिका को संदर्भित करने के लिए उपयोग की जाने वाली निरंतर स्ट्रिंग। विंडोज और पॉज़िक्स के लिए यह '.' है। os.path के माध्यम से भी उपलब्ध है।

आप इसके बजाय os.getcwd() का उपयोग करने पर विचार कर सकते हैं।

5

os.path.curdir का मान "." लिनक्स, विंडोज और ओएस एक्स पर है। हालांकि, पुराने मैक ओएस 9 सिस्टम पर ":" है। पाइथन काफी लंबे समय तक रहा है कि यह महत्वपूर्ण होता था।

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