पायथन प्रोजेक्ट्स में सापेक्ष पथों के साथ फ़ाइलों तक पहुंच
पायथन प्रोजेक्ट के भीतर फ़ाइलों में हेरफेर करते समय, सुविधा के लिए अक्सर सापेक्ष पथों का उपयोग किया जाता है। हालाँकि, उनका व्यवहार अस्पष्ट हो सकता है, खासकर बहु-स्तरीय परियोजना संरचनाओं से निपटने के दौरान।
निम्नलिखित परियोजना लेआउट पर विचार करें:
project /data test.csv /package __init__.py module.py main.py
मॉड्यूल मॉड्यूल.py एक सापेक्ष पथ का उपयोग करके ../data/test.csv में एक फ़ाइल को पढ़ने का प्रयास करता है, लेकिन main.py चलाने पर, एक त्रुटि उत्पन्न होती है जो दर्शाती है कि फ़ाइल नहीं मिली है। यह स्पष्ट असंगतता इस तथ्य से उत्पन्न होती है कि सापेक्ष पथ को स्क्रिप्ट निष्पादित होने के स्थान के आधार पर अलग-अलग तरीके से हल किया जाता है।
__init__.py और मॉड्यूल.py के मामले में, पथ का मूल्यांकन इन युक्त निर्देशिका के सापेक्ष किया जाता है फ़ाइलें. हालाँकि, main.py के लिए, पथ अपने स्वयं के स्थान से संबंधित है। वैकल्पिक रूप से, पायथन की __file__ विशेषता का उपयोग करना एक अधिक सुंदर तरीका है:
pathlib आयात पथ से पथ = पथ(__फ़ाइल__).अभिभावक / "../data/test.csv" path.open() के साथ f: test = list(csv.reader(f))
यह ट्रिक Python के 3.4 pathlib मॉड्यूल पर निर्भर करती है और वर्तमान स्क्रिप्ट के स्थान के आधार पर एक पूर्ण पथ बनाती है।from pathlib import Path
path = Path(__file__).parent / "../data/test.csv"
with path.open() as f:
test = list(csv.reader(f))
यदि 3.4 से नीचे का पायथन संस्करण अभी भी उपयोग में है, तो एक वैकल्पिक विधि में वर्तमान पथ में हेरफेर शामिल है:
import csv ओएस.पथ आयात करें my_path = os.path.abspath(os.path.dirname(__file__)) पथ = os.path.join(my_path, "../data/test.csv") f के रूप में खुले (पथ) के साथ: test = list(csv.reader(f))
यह दृष्टिकोण पाथलिब-आधारित पद्धति के समान परिणाम प्राप्त करने के लिए os.path फ़ंक्शन को जोड़ता है।अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3