Python मानक लायब्ररी os वापरून, तुम्ही फाइलचा आकार (क्षमता) किंवा निर्देशिकेत समाविष्ट असलेल्या फाइल्सचा एकूण आकार मिळवू शकता.
पुढील तीन पद्धती स्पष्ट केल्या आहेत. मिळू शकणार्या आकारांची एकके सर्व बाइट्स आहेत.
- फाइलचा आकार मिळवा:
os.path.getsize()
- खालील फंक्शन्स एकत्र करून डिरेक्टरीचा आकार मिळवा (Python 3.5 किंवा नंतरचे):
os.scandir()
- डिरेक्टरीचा आकार मिळविण्यासाठी खालील फंक्शन्स एकत्र करा (Python 3.4 आणि पूर्वीचे):
os.listdir()
फाइलचा आकार मिळवा:os.path.getsize()
फाइलचा आकार (क्षमता) os.path.getsize() सह मिळवता येतो.
ज्या फाईलचा आकार तुम्हाला वितर्क म्हणून मिळवायचा आहे त्याचा मार्ग द्या.
import os
print(os.path.getsize('data/src/lena_square.png'))
# 473831
निर्देशिकेचा आकार (फोल्डर) मिळवा:os.scandir()
निर्देशिका (फोल्डर) मध्ये समाविष्ट असलेल्या फाइल्सच्या एकूण आकाराची गणना करण्यासाठी, os.scandir() वापरा.
हे फंक्शन Python 3.5 मध्ये जोडले गेले होते, त्यामुळे पूर्वीच्या आवृत्त्या os.listdir() वापरतात. os.listdir() उदाहरण नंतर वर्णन केले आहे.
खालीलप्रमाणे फंक्शन परिभाषित करा.
def get_dir_size(path='.'):
total = 0
with os.scandir(path) as it:
for entry in it:
if entry.is_file():
total += entry.stat().st_size
elif entry.is_dir():
total += get_dir_size(entry.path)
return total
print(get_dir_size('data/src'))
# 56130856
os.scandir() os.DirEntry ऑब्जेक्टचा पुनरावृत्ती करणारा परत करतो.
DirEntry ऑब्जेक्ट, फाइल आहे की डिरेक्ट्री आहे हे निर्धारित करण्यासाठी is_file() आणि is_dir() पद्धती वापरा. जर ती फाईल असेल, तर आकार stat_result ऑब्जेक्टच्या st_size विशेषता वरून मिळवला जातो. डिरेक्ट्रीच्या बाबतीत, सर्व आकार जोडण्यासाठी आणि एकूण आकार परत करण्यासाठी या फंक्शनला वारंवार म्हटले जाते.
याशिवाय, डीफॉल्टनुसार, is_file() फाइल्सच्या सिम्बॉलिक लिंक्ससाठी TRUE देते. तसेच, is_dir() डिरेक्टरीच्या सिम्बॉलिक लिंक्ससाठी खरे रिटर्न करते. तुम्हाला प्रतीकात्मक लिंक्सकडे दुर्लक्ष करायचे असल्यास, is_file() आणि is_dir() चे follow_symlinks वितर्क असत्य वर सेट करा.
तसेच, जर तुम्हाला उपडिरेक्टरीजमध्ये जाण्याची गरज नसेल, तर तुम्ही फक्त खालील भाग हटवू शकता.
elif entry.is_dir():
total += get_dir_size(entry.path)
फाईलचा मार्ग आर्ग्युमेंट म्हणून पास केल्यास वरील फंक्शन अयशस्वी होईल. फाइल किंवा डिरेक्टरीचा आकार परत करण्यासाठी तुम्हाला फंक्शनची आवश्यकता असल्यास, तुम्ही खालील लिहू शकता.
def get_size(path='.'):
if os.path.isfile(path):
return os.path.getsize(path)
elif os.path.isdir(path):
return get_dir_size(path)
print(get_size('data/src'))
# 56130856
print(get_size('data/src/lena_square.png'))
# 473831
निर्देशिकेचा आकार (फोल्डर) मिळवा:os.listdir()
Python 3.4 किंवा त्यापूर्वीचे कोणतेही os.scandir() नाही, म्हणून os.listdir() वापरा.
खालीलप्रमाणे फंक्शन परिभाषित करा.
def get_dir_size_old(path='.'):
total = 0
for p in os.listdir(path):
full_path = os.path.join(path, p)
if os.path.isfile(full_path):
total += os.path.getsize(full_path)
elif os.path.isdir(full_path):
total += get_dir_size_old(full_path)
return total
print(get_dir_size_old('data/src'))
# 56130856
मूळ कल्पना os.scandir() च्या बाबतीत सारखीच आहे.
os.listdir() सह काय मिळू शकते ते फाइल नावांची यादी आहे (डिरेक्टरी नावे). प्रत्येक फाईलचे नाव किंवा निर्देशिकेचे नाव संपूर्ण पथ तयार करण्यासाठी os.path.join() सह पॅरेंट डिरेक्ट्रीच्या मार्गाशी जोडले जाते.
लक्ष्य एक प्रतीकात्मक दुवा असल्यास, os.path.isfile() आणि os.path.isdir() घटकाचा न्याय करतील. म्हणून, जर तुम्हाला प्रतिकात्मक दुव्यांकडे दुर्लक्ष करायचे असेल, तर os.path.islink() च्या संयोजनात सशर्त निर्णय वापरा, जे प्रतिकात्मक दुव्यांसाठी सत्य परत करेल.
os.scandir() प्रमाणेच, जर तुम्हाला उपडिरेक्ट्रीजमधून जाण्याची गरज नसेल, तर फक्त खालील भाग हटवा.
elif os.path.isdir(full_path):
total += get_dir_size_old(full_path)
फाईलचा मार्ग आर्ग्युमेंट म्हणून पास केल्यास वरील फंक्शन अयशस्वी होईल. फाइल किंवा डिरेक्टरीचा आकार परत करण्यासाठी तुम्हाला फंक्शनची आवश्यकता असल्यास, तुम्ही खालील लिहू शकता.
def get_size_old(path='.'):
if os.path.isfile(path):
return os.path.getsize(path)
elif os.path.isdir(path):
return get_dir_size_old(path)
print(get_size_old('data/src'))
# 56130856
print(get_size_old('data/src/lena_square.png'))
# 473831