मेरे पास कई स्क्रिप्ट हैं जो एक निर्देशिका नाम इनपुट के रूप में लेते हैं, और मेरा प्रोग्राम उन निर्देशिकाओं में फ़ाइलों को बनाता है। कभी-कभी मैं प्रोग्राम को दी गई निर्देशिका का बेसनाम लेना चाहता हूं और निर्देशिका में विभिन्न फाइलें बनाने के लिए इसका उपयोग करना चाहता हूं। उदाहरण के लिए,पायथन में निर्देशिका के बेसनाम लेने का सुरुचिपूर्ण तरीका?
# directory name given by user via command-line
output_dir = "..." # obtained by OptParser, for example
my_filename = output_dir + '/' + os.path.basename(output_dir) + '.my_program_output'
# write stuff to my_filename
समस्या यह है कि उपयोगकर्ता स्लैश के साथ एक निर्देशिका का नाम देता है, तो os.path.basename रिक्त स्ट्रिंग वापस आ जाएगी, जो कि मैं क्या नहीं करना चाहता है। पायथन में इन स्लैश/पिछला स्लैश मुद्दों से निपटने का सबसे शानदार तरीका क्या है? मुझे पता है कि मैं output_dir के अंत में स्लैश के लिए मैन्युअल रूप से जांच सकता हूं और अगर वहां है तो इसे हटा दें, लेकिन ऐसा लगता है कि एक बेहतर तरीका होना चाहिए। है?
साथ ही, मैन्युअल रूप से '/' अक्षर जोड़ने के लिए ठीक है? जैसे output_dir + '/' os.path.basename() या पथ बनाने के लिए एक और सामान्य तरीका है?
धन्यवाद।
"" "" "यह Windows पर टूट जाएगा": सहित स्लैश केवल यदि आप जैसे के लिए एक आदेश के हिस्से के रूप में यह फ़ीड टूट जाएगा 'Os.system()'; डॉस कमांड पार्सर केवल बैकस्लाश को समझता है। इसे उदाहरण के लिए फ़ीड करना खुला() काफी ठीक है। हालांकि यदि विंडोज उपयोगकर्ता या व्यवस्थापक को निर्मित पथ कभी प्रदर्शित किया जाना है, तो बहुत से फ्लाक के लिए तैयार रहें :-) –