दिलचस्प पोस्ट
स्विफ्ट में UIWebView के साथ कुकीज़ का प्रबंधन कैसे करें स्ट्रिंग से विशिष्ट यूनिकोड श्रेणी के पात्रों को निकालते हैं उपयोगकर्ता द्वारा पुश नोटिफिकेशन सक्षम किए जाने पर iPhone पर निर्धारित करें UIButton ब्लॉक addTarget के लिए बराबर है: क्रिया: के लिए नियंत्रण ईवेंट्स: विधि? आप अपने संस्करण नियंत्रण भंडार को व्यवस्थित कैसे करते हैं? डीजेंगो फॉर्म में सीएसएस वर्ग को परिभाषित करें डेटाबेस, टेबल, कॉलम के मिलान को कैसे बदल सकता है? जावास्क्रिप्ट कंसोल में रंग कोणीय: कॉलिंग कंट्रोलर फंक्शन का उपयोग करके निर्देशक लिंक फ़ंक्शन के अंदर & मैं एक वीडियो (mov) से एक फ्रेम नमूना (जेपीजी) कैसे प्राप्त कर सकता हूं ब्राउज़रों कैश HTTP 301s कब तक कर रहे हैं? निर्धारित करें कि वर्तमान अनुप्रयोग सक्रिय है (फोकस है) आप सी में निर्देशिका सूची कैसे प्राप्त करते हैं? स्ट्रिंग को bool के साथ int को परिवर्तित करें / C ++ में विफल एंड्रॉइड ब्लूटूथ RFCOMM कनेक्शन को .connect () के तुरंत बाद मरने से कैसे रोकें?

पायथन में किसी पथ से एक्सटेंशन के बिना फ़ाइल नाम कैसे प्राप्त करें?

पायथन में किसी पथ से एक्सटेंशन के बिना फ़ाइल नाम कैसे प्राप्त करें?

एक्सटेंशन के साथ फ़ाइल नाम प्राप्त करने के लिए os.path.basename नामक विधि os.path.basename । लेकिन जब भी मैं ओएस आयात करता हूं, मैं इसे path.basename कॉल करने में सक्षम नहीं path.basenamepath.basename । क्या इसे सीधे बेसनेम के रूप में कॉल करना संभव है?

Solutions Collecting From Web of "पायथन में किसी पथ से एक्सटेंशन के बिना फ़ाइल नाम कैसे प्राप्त करें?"

एक्सटेंशन के बिना फाइल का नाम प्राप्त करना:

 import os print(os.path.splitext("path_to_file")[0]) 

आपकी आयात समस्या के लिए, आप इसे इस तरह से हल करें:

 from os.path import basename # now you can call it directly with basename print(basename("/a/b/c.txt")) 

बस इसे रोल करें:

 >>> import os >>> base=os.path.basename('/root/dir/sub/file.ext') >>> base 'file.ext' >>> os.path.splitext(base) ('file', '.ext') >>> os.path.splitext(base)[0] 'file' 
 >>> print os.path.splitext(os.path.basename("hemanth.txt"))[0] hemanth 

यदि आप फ़ाइल का पथ रखना चाहते हैं और एक्सटेंशन को निकालना चाहते हैं

 >>> file = '/root/dir/sub.exten/file.data.1.2.dat' >>> print ('.').join(file.split('.')[:-1]) /root/dir/sub.exten/file.data.1.2 

लेकिन जब भी मैं ओएस आयात करता हूं, मैं इसे पाथ कॉल करने में सक्षम नहीं हूं। Basename। क्या इसे सीधे बेसनेम के रूप में कॉल करना संभव है?

import os , और फिर os.path.basename उपयोग os.path.basename

import os.foo का अर्थ यह नहीं है कि os संदर्भ के बिना आप os.foo उपयोग कर सकते हैं।

os.path.splitext () काम नहीं करेगा अगर विस्तार में कई बिंदु हैं।

उदाहरण के लिए, images.tar.gz

 >>> import os >>> file_path = '/home/dc/images.tar.gz' >>> file_name = os.path.basename(file_path) >>> print os.path.splitext(file_name)[0] images.tar 

आप बस मूलभूत नाम के पहले बिंदु के सूचक को खोज सकते हैं और उसके बाद केवल एक्सटेंशन के बिना फ़ाइल नाम प्राप्त करने के लिए बेसएनाम को दोहरा सकते हैं।

 >>> import os >>> file_path = '/home/dc/images.tar.gz' >>> file_name = os.path.basename(file_path) >>> index_of_dot = file_name.index('.') >>> file_name_without_extension = file_name[:index_of_dot] >>> print file_name_without_extension images 

पूर्णता के लिए, यहां अजगर 3.2+ के लिए pathlib समाधान है:

 from pathlib import Path print(Path(your_path).resolve().stem) 

import os

 filename = C:\\Users\\Public\\Videos\\Sample Videos\\wildlife.wmv 

यह extension बिना filename का filename देता है (सी: \ उपयोगकर्ता \ सार्वजनिक \ वीडियो \ नमूना वीडियो \ वन्यजीव)

 temp = os.path.splitext(filename)[0] 

अब आप filename से केवल filename प्राप्त कर सकते हैं

 os.path.basename(temp) #this returns just the filename (wildlife) 

विंडोज सिस्टम पर मैं भी drivername उपसर्ग का उपयोग किया, जैसे:

 >>> s = 'c:\\temp\\akarmi.txt' >>> print(os.path.splitext(s)[0]) c:\temp\akarmi 

इसलिए मुझे ड्राइव अक्षर या निर्देशिका नाम की आवश्यकता नहीं है, इसलिए मैं इसका उपयोग करता / करती हूं:

 >>> print(os.path.splitext(os.path.basename(s))[0]) akarmi 
 import os path = "a/b/c/abc.txt" print os.path.splitext(os.path.basename(path))[0] 

हम कुछ साधारण split / pop जादू कर सकते हैं जैसा कि यहां देखा गया है ( https://stackoverflow.com/a/424006/1250044 ), फ़ाइल नाम (खिड़कियों और पॉसिक्स मतभेदों का सम्मान) निकालने के लिए।

 def getFileNameWithoutExtension(path): return path.split('\\').pop().split('/').pop().rsplit('.', 1)[0] getFileNameWithoutExtension('/path/to/file-0.0.1.ext') # => file-0.0.1 getFileNameWithoutExtension('\\path\\to\\file-0.0.1.ext') # => file-0.0.1 

@ आइस एडॉर का नाम @ user2902201 के समाधान के लिए एक टिप्पणी में आरएसप्लीट को संदर्भित करता है। rsplit एक सरल समाधान है जो कई अवधि का समर्थन करता है।

यहां बताया गया है:

 file = 'my.report.txt' print file.rsplit('.', 1)[0] 

मेरी रिपोर्ट

एक एकाधिक विस्तार की जानकारी str और unicode पथ के लिए काम करता है पायथन 2 और 3 में काम करता है

 import os def file_base_name(file_name): if '.' in file_name: separator_index = file_name.index('.') base_name = file_name[:separator_index] return base_name else: return file_name def path_base_name(path): file_name = os.path.basename(path) return file_base_name(file_name) 

व्यवहार:

 >>> path_base_name('file') 'file' >>> path_base_name(u'file') u'file' >>> path_base_name('file.txt') 'file' >>> path_base_name(u'file.txt') u'file' >>> path_base_name('file.tar.gz') 'file' >>> path_base_name('file.abcdefg') 'file' >>> path_base_name('relative/path/file.ext') 'file' >>> path_base_name('/absolute/path/file.ext') 'file' >>> path_base_name('Relative\\Windows\\Path\\file.txt') 'file' >>> path_base_name('C:\\Absolute\\Windows\\Path\\file.txt') 'file' >>> path_base_name('/path with spaces/file.ext') 'file' >>> path_base_name('C:\\Windows Path With Spaces\\file.txt') 'file' >>> path_base_name('some/path/file name with spaces.tar.gz.zip.rar.7z') 'file name with spaces' 

Python Pathlib में Pathlib का उपयोग करते हुए एक पठनीय संस्करण

 from pathlib import Path Path('/root/dir/sub/file.ext').stem 

प्रिंट होगा:

फ़ाइल

यदि पथ एक प्रतीकात्मक लिंक हो सकता है, तो resolve()

 Path('/root/dir/sub/file.ext').resolve().stem 

सुविधा के लिए, os.path से दो तरीकों को लपेटने वाला एक सरल कार्य:

 def filename(path): """Return file name without extension from path. See https://docs.python.org/3/library/os.path.html """ import os.path b = os.path.split(path)[1] # path, *filename* f = os.path.splitext(b)[0] # *file*, ext #print(path, b, f) return f 

पायथन 3.5 के साथ परीक्षण किया।

 import os list = [] def getFileName( path ): for file in os.listdir(path): #print file try: base=os.path.basename(file) splitbase=os.path.splitext(base) ext = os.path.splitext(base)[1] if(ext): list.append(base) else: newpath = path+"/"+file #print path getFileName(newpath) except: pass return list getFileName("/home/weexcel-java3/Desktop/backup") print list 

इसका समाधान करने का सबसे आसान तरीका यह है कि

 import ntpath print('Base name is ',ntpath.basename('/path/to/the/file/')) 

यह समय और गणना लागत को बचाता है