Directory में Files पर Iterate करना
os.listdir(my_path) आपको my_path Directory में मौजूद सब कुछ - Files और Directories दोनों - देगा।
उदाहरण
>>> import os
>>> os.listdir('.')
['DLLs', 'Doc', 'etc', 'include', 'Lib', 'libs', 'LICENSE.txt', 'NEWS.txt', 'python.exe', 'pythonw.exe', 'README.txt', 'Scripts', 'share', 'tcl', 'Tools', 'w9xpopen.exe']
केवल Files प्राप्त करना
यदि आप केवल Files चाहते हैं, तो isfile का उपयोग करके Filter कर सकते हैं:
>>> import os
>>> file_list = [f for f in os.listdir('.') if os.path.isfile(os.path.join('.', f))]
>>> print(file_list)
['LICENSE.txt', 'NEWS.txt', 'python.exe', 'pythonw.exe', 'README.txt', 'w9xpopen.exe']
Files पर Iterate करना
import os
for filename in os.listdir('.'):
filepath = os.path.join('.', filename)
if os.path.isfile(filepath):
print(f"File: {filename}")
# File के साथ कुछ करें
with open(filepath, 'r') as f:
content = f.read()
आधुनिक Python (3.4+) में Pathlib का उपयोग (अनुशंसित):
from pathlib import Path
for file_path in Path('.').iterdir():
if file_path.is_file():
print(f"File: {file_path.name}")
content = file_path.read_text()
# Recursive Iteration
for file_path in Path('.').rglob('*'):
if file_path.is_file():
print(file_path)
os.scandir() का उपयोग (Python 3.5+, अधिक Efficient):
import os
with os.scandir('.') as entries:
for entry in entries:
if entry.is_file():
print(entry.name)
# entry.stat() से Metadata बिना Extra System Call के उपलब्ध