Python Programming

अपने Python स्क्रिप्ट की डायरेक्टरी ढूँढना: तीन सिद्ध तरीके

Spread the love

अपने पाइथन स्क्रिप्ट की निर्देशिका का निर्धारण फ़ाइल हैंडलिंग से लेकर संसाधन प्रबंधन तक विभिन्न कार्यों के लिए आवश्यक है। यह लेख इसे प्राप्त करने के तीन तरीकों का पता लगाता है, आपकी आवश्यकताओं के लिए सबसे अच्छा तरीका चुनने में आपकी सहायता के लिए उनकी ताकत और कमजोरियों की तुलना करता है।

विषयवस्तु की तालिका

विधि 1: os.path का उपयोग करना

os.path मॉड्यूल स्क्रिप्ट की निर्देशिका प्राप्त करने का एक सीधा तरीका प्रदान करता है। यह os.path.dirname() और अंतर्निहित __file__ चर का उपयोग करता है, जिसमें स्क्रिप्ट का पथ होता है। हालाँकि, __file__ केवल तभी परिभाषित होता है जब स्क्रिप्ट सीधे चलाई जाती है, न कि जब इसे मॉड्यूल के रूप में आयात किया जाता है।


import os

def get_script_directory():
  """वर्तमान स्क्रिप्ट की निर्देशिका देता है।"""
  try:
    script_dir = os.path.dirname(os.path.abspath(__file__))
    return script_dir
  except NameError:
    return os.getcwd()  # वर्तमान कार्य निर्देशिका में वापस आना

current_directory = get_script_directory()
print(f"स्क्रिप्ट की निर्देशिका है: {current_directory}")

इस मजबूत संस्करण में त्रुटि हैंडलिंग शामिल है, यदि __file__ अनुपलब्ध है तो os.getcwd() का उपयोग करके वर्तमान कार्य निर्देशिका में सुचारू रूप से वापस आ जाता है।

विधि 2: pathlib का उपयोग करना

pathlib मॉड्यूल एक अधिक ऑब्जेक्ट-ओरिएंटेड और पठनीय दृष्टिकोण प्रदान करता है। यह आसान पथ हेरफेर के लिए Path ऑब्जेक्ट का उपयोग करता है।


from pathlib import Path

def get_script_directory_pathlib():
  """pathlib का उपयोग करके वर्तमान स्क्रिप्ट की निर्देशिका देता है।"""
  try:
    script_path = Path(__file__).parent.resolve()
    return script_path
  except NameError:
    return Path.cwd()

current_directory = get_script_directory_pathlib()
print(f"स्क्रिप्ट की निर्देशिका है: {current_directory}")

यह विधि पूर्ण पथ प्राप्त करने के लिए संगति सुनिश्चित करने के लिए .parent का उपयोग माता-पिता निर्देशिका तक पहुँचने और .resolve() का उपयोग करती है। त्रुटि हैंडलिंग os.path उदाहरण को दर्शाती है।

विधि 3: inspect का उपयोग करना

inspect मॉड्यूल स्क्रिप्ट के स्रोत कोड के आत्मनिरीक्षण की अनुमति देता है। हालांकि कम प्रत्यक्ष, यह जटिल परिदृश्यों में सहायक हो सकता है।


import inspect
import os

def get_script_directory_inspect():
    """inspect का उपयोग करके वर्तमान स्क्रिप्ट की निर्देशिका देता है।"""
    current_frame = inspect.currentframe()
    caller_frame = inspect.getouterframes(current_frame, 2)[1]
    file_path = caller_frame.filename
    return os.path.dirname(os.path.abspath(file_path))

current_directory = get_script_directory_inspect()
print(f"स्क्रिप्ट की निर्देशिका है: {current_directory}")

यह विधि फ़ंक्शन के साथ ही समस्याओं से बचने के लिए inspect.currentframe() और inspect.getouterframes() का उपयोग कॉलर का फ़ाइल नाम प्राप्त करने के लिए करती है। फिर यह os.path का उपयोग करके निर्देशिका निकालता है। इसकी जटिलता के कारण यह दृष्टिकोण आम तौर पर कम पसंद किया जाता है।

निष्कर्ष

तीनों विधियाँ प्रभावी रूप से स्क्रिप्ट की निर्देशिका प्राप्त करती हैं। pathlib एक आधुनिक, पठनीय और ऑब्जेक्ट-ओरिएंटेड समाधान प्रदान करता है, जिससे यह अधिकांश मामलों में अनुशंसित दृष्टिकोण बन जाता है। os.path एक सरल विकल्प प्रदान करता है, जबकि inspect गहन आत्मनिरीक्षण की आवश्यकता वाले विशिष्ट स्थितियों के लिए सबसे उपयुक्त है।

अक्सर पूछे जाने वाले प्रश्न

  • प्रश्न: यदि मेरी स्क्रिप्ट किसी भिन्न निर्देशिका से चलाई जाती है तो क्या होगा? उत्तर: ये विधियाँ स्क्रिप्ट का स्थान लौटाती हैं, निष्पादन निर्देशिका नहीं। निष्पादन निर्देशिका के लिए os.getcwd() का उपयोग करें।
  • प्रश्न: pathlib उदाहरण में resolve() का उपयोग क्यों करें? उत्तर: resolve() सांकेतिक लिंक के साथ समस्याओं को रोकने के लिए सापेक्ष पथों को पूर्ण पथ में परिवर्तित करता है।
  • प्रश्न: कौन सी विधि सबसे तेज है? उत्तर: प्रदर्शन अंतर नगण्य हैं। पठनीयता और कोड शैली को प्राथमिकता दें।

प्रातिक्रिया दे

आपका ईमेल पता प्रकाशित नहीं किया जाएगा. आवश्यक फ़ील्ड चिह्नित हैं *