अजगर, निर्देशिका स्ट्रिंग, ओएस स्वतंत्र रूप से अनुगामी स्लेश जोड़ें


114

यदि मैं पहले से ही टेलिंग स्लैश नहीं है, तो मैं एक डायरेक्टरी स्ट्रिंग में ट्रेलिंग स्लैश ( /* निक्स, विन 32 के \लिए) कैसे जोड़ सकता हूं ? धन्यवाद!


8
आपको सीधे स्ट्रिंग्स में हेरफेर करने के बजाय os.pathमॉड्यूल ( docs.python.org/library/os.path.html ) का उपयोग करना चाहिए । os.path.joinपथ घटकों को सम्‍मिलित करने के लिए उपयोग करें ।
kennytm

2
याद दिलाने के लिए टिम धन्यवाद, डॉक पढ़ने के बाद, मुझे लगता है कि मेरे असली सवाल का जवाब os.path.join (फ़ोल्डर, फ़ाइल नाम) है और मुझे इस स्लैश के बारे में बिल्कुल भी चिंता करने की ज़रूरत नहीं है। यार, मैं अजगर से प्यार करने जा रहा हूं ;-)
ओहो

2
इसलिए मैंने पूछा - अपने आप से ऐसा न करें, os.path.joinमानक लाइब्रेरी को सही पथ विभाजक का उपयोग करने दें।
टिम पीटरज़ॉ

2
@ S.Lott मैं इस 'बुरे' पर विचार नहीं करूंगा। सवाल अपने आप में एक वैध प्रश्न है। यह केवल एक बड़ा हिस्सा है (कोई वास्तविक कह सकता है) सवाल का हिस्सा है।
ओहो

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

जवाबों:


180

os.path.join(path, '') यदि यह पहले से ही नहीं है, तो ट्रेलिंग स्लैश जोड़ देगा।

आप कर सकते हैं os.path.join(path, '', '')या os.path.join(path_with_a_trailing_slash, '')आप अभी भी केवल एक अनुगामी स्लेश प्राप्त करेंगे।


2
जब pathएक निर्देशिका के बजाय एक फ़ाइल होती है, तो एक स्लैश भी जोड़ता है । वह थोड़ा असुविधाजनक है।
मार्टिन

27

चूंकि आप एक निर्देशिका और एक फ़ाइल नाम कनेक्ट करना चाहते हैं, उपयोग करें

os.path.join(directory, filename)

यदि आप .\..\..\blah\रास्तों से छुटकारा पाना चाहते हैं, तो उपयोग करें

os.path.join(os.path.normpath(directory), filename)

11

आप इसे मैन्युअल रूप से कर सकते हैं:

path = ...

import os
if not path.endswith(os.path.sep):
    path += os.path.sep

हालांकि, यह आमतौर पर उपयोग करने के लिए बहुत क्लीनर है os.path.join


-1

आप कुछ इस तरह का उपयोग कर सकते हैं:

os.path.normcase(path)
    Normalize the case of a pathname. On Unix and Mac OS X, this returns the path unchanged; on case-insensitive filesystems, it converts the path to lowercase. On Windows, it also converts forward slashes to backward slashes.

और आप इस पृष्ठ पर कुछ और देख सकते हैं

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.