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 દલીલને false પર સેટ કરો.
ઉપરાંત, જો તમારે સબડાયરેક્ટરીઝને પાર કરવાની જરૂર નથી, તો તમે ફક્ત નીચેના ભાગને કાઢી શકો છો.
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