पूरे पथ के बिना पायथन ग्लोब - केवल फ़ाइल नाम


83

क्या कोई ऐसा तरीका है जो मैं किसी निर्देशिका पर ग्लोब का उपयोग कर सकता हूं, एक विशिष्ट एक्सटेंशन के साथ फाइल प्राप्त करने के लिए, लेकिन केवल फ़ाइल नाम ही, संपूर्ण पथ नहीं?

python  glob 

जवाबों:




12

के साथ संयोजन में ग्लोब का उपयोग करें os.path.basename


3
map(os.path.basename, glob.glob("your/path"))

सभी फ़ाइल नाम और एक्सटेंशन के साथ एक पुनरावृत्ति देता है।


1

os.path.basename मेरे लिए काम करता है।

यहाँ कोड उदाहरण है:

import sys,glob
import os

expectedDir = sys.argv[1]                                                    ## User input for directory where files to search

for fileName_relative in glob.glob(expectedDir+"**/*.txt",recursive=True):       ## first get full file name with directores using for loop

    print("Full file name with directories: ", fileName_relative)

    fileName_absolute = os.path.basename(fileName_relative)                 ## Now get the file name with os.path.basename

    print("Only file name: ", fileName_absolute)

आउटपुट:

Full file name with directories:  C:\Users\erinksh\PycharmProjects\EMM_Test2\venv\Lib\site-packages\wheel-0.33.6.dist-info\top_level.txt
Only file name:  top_level.txt

आपने अपने चर नामों को मिलाया है: पूर्ण का अर्थ है पूर्ण पथ; सापेक्ष का मतलब केवल आधार नाम है।
ओमाताई

0

मैं सापेक्ष ग्लोबिंग के लिए समाधान फिर से लिखता हूं (esp। जब मुझे एक जिपफाइल में आइटम जोड़ने की आवश्यकता होती है) - यह वही है जो आमतौर पर ऐसा दिखता है।

# Function
def rel_glob(pattern, rel):
    """glob.glob but with relative path
    """
    for v in glob.glob(os.path.join(rel, pattern)):
        yield v[len(rel):].lstrip("/")

# Use
# For example, when you have files like: 'dir1/dir2/*.py'
for p in rel_glob("dir2/*.py", "dir1"):
    # do work
    pass

0

यदि आप CSV फाइल की तलाश में हैं:

file = [os.path.basename(x) for x in glob.glob(r'C:\Users\rajat.prakash\Downloads//' + '*.csv')]

यदि आप EXCEL फाइल की तलाश में हैं:

file = [os.path.basename(x) for x in glob.glob(r'C:\Users\rajat.prakash\Downloads//' + '*.xlsx')]
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.