पायथन में विस्तार के बिना फ़ाइल नाम प्राप्त करें


91

अगर मेरे पास इनमें से एक जैसा फ़ाइल नाम है:

1.1.1.1.1.jpg

1.1.jpg

1.jpg

बिना विस्तार के मुझे केवल नाम कैसे मिल सकता है? क्या एक रेगेक्स उचित होगा?


जवाबों:


203

ज्यादातर मामलों में, आपको उसके लिए एक regex का उपयोग नहीं करना चाहिए।

os.path.splitext(filename)[0]

यह भी .bashrcपूरा नाम रखकर सही ढंग से फ़ाइल नाम को संभाल लेगा ।


4
"Git-1.7.8.tar.gz" के साथ ठीक से काम नहीं करता है, जहां यह केवल ".gz" को हटा देता है। मैं इसके लिए उपयोग करता हूं basename[:-len(".tar.gz")]
blueyed

28
@blueyed: "ठीक से काम नहीं करता है" परिप्रेक्ष्य का विषय है। फ़ाइल है एक gzip फ़ाइल, जो आधार नाम है git-1.7.8.tar। सही तरीके से यह अनुमान लगाने का कोई तरीका नहीं है कि कॉलर कितने डॉट्स बंद करना चाहता है, इसलिए splitext()केवल आखिरी स्ट्रिप्स है। यदि आप किनारे-मामलों को संभालना चाहते हैं .tar.gz, तो आपको इसे हाथ से करना होगा। जाहिर है, आप सभी बिंदुओं को छीन नहीं सकते, क्योंकि आप के साथ समाप्त हो जाएगा git-1
मार्सेलो कैंटोस


10

अगर मुझे regex के साथ ऐसा करना था, तो मैं इसे इस तरह से करूँगा:

s = re.sub(r'\.jpg$', '', s)

7

फ़ाइल नाम प्राप्त करने के लिए आप स्टेम विधि का उपयोग कर सकते हैं ।

यहाँ एक उदाहरण है:

from pathlib import Path

p = Path(r"\\some_directory\subdirectory\my_file.txt")
print(p.stem)
# my_file

6

रेगेक्स की कोई आवश्यकता नहीं है। os.path.splitextआपका दोस्त है:

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