2009-05-09 13 views
5

में पथ सेट करने के कुछ अच्छे तरीके क्या हैं, एक पाइथन स्क्रिप्ट लिखते समय जिसे विभिन्न ऑपरेटिंग सिस्टम वातावरण (विंडोज/* निक्स) में निष्पादित किया जा सकता है, पथ सेट करने के कुछ अच्छे तरीके क्या हैं ? नीचे दिए गए उदाहरण में मैं वर्तमान निर्देशिका के तहत लॉग फ़ोल्डर में संग्रहीत लॉगफाइल रखना चाहता हूं। क्या यह एक स्वीकार्य दृष्टिकोण है (मैं पाइथन के लिए नया हूं) या क्या इसे हासिल करने के बेहतर तरीके हैं? धन्यवादमल्टी-ओएस समर्थित पाइथन स्क्रिप्ट

if os.name == 'nt': 
    logdir=('%s\\logs\\') % (os.getcwd()) 
else: 
    logdir=('%s/logs/') % (os.getcwd()) 

logging.basicConfig(level=logging.INFO, 
    format='%(asctime)s %(name)-12s %(levelname)-8s %(message)s', 
    datefmt='%m-%d-%y %H:%M:%S', 
    filename='%slogfile.log' % (logdir), 
    filemode='a') 
+1

ध्यान दें कि एमएस ओएसई ने लंबे समय तक पथ विभाजक के रूप में आगे स्लैश स्वीकार कर लिया है (यह कमांड लाइन शैल है जो इसके साथ जारी किया गया है)। "/" ओएस एक्स पर भी काम करता है। मुझे ओपनवीएमएस के बारे में पता नहीं है। सबसे पोर्टेबल दृष्टिकोण रायन का उल्लेख है, जो सभी ओएस पर काम करेगा। – outis

उत्तर

8

निश्चित रूप से os.path पर एक नज़र डालें। इसमें आपको "सुरक्षित" क्रॉस-ओएस पथ मैनिपुलेशन फ़ंक्शन शामिल हैं जिनमें आपको आवश्यकता है। उदाहरण के लिए, मैं हमेशा परिदृश्य में ऐसा करने के बाद आप रूपरेखा कर रहे हैं:

os.path.join(os.path.abspath(os.path.dirname(__file__)), 'logs') 

भी ध्यान रखें कि आप पथ विभाजक प्राप्त करना चाहते हैं, तो आप उपयोग कर सकते हैं:

os.path.sep 

यह निकलेगा विंडोज़ पर '\\', और लिनक्स पर '/', उदाहरण के लिए।

+0

धन्यवाद रयान। मैंने आपकी सलाह के आधार पर निम्नलिखित के साथ समाप्त किया: os.path.join (os.path.abspath (os.path.dirname (__ scriptname__)), 'लॉग') + (os.sep) इससे उत्पन्न हुआ पथ के अंत में सही स्लैश के साथ उचित रास्ता। – Shaun

+0

मदद करने के लिए खुशी हुई! :-) –

2

सबसे पहले, पथ मैनिपुलेशन के लिए हमेशा os.path का उपयोग करें।

अधिक महत्वपूर्ण बात यह है कि सभी पथ कॉन्फ़िगरेशन फ़ाइलों में प्रदान किए जाने चाहिए।

लॉगिंग के लिए, fileConfig फ़ंक्शन का उपयोग करें।

अन्य सभी के लिए, कॉन्फ़िगरेशन फ़ाइल या कमांड लाइन पैरामीटर या पर्यावरण चर होना सुनिश्चित करें।

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