यदि आप पहले से ही चाहते हैं कि कोड की एक पंक्ति में फ़ाइल आकार मुद्रित करने के लिए एक त्वरित और अपेक्षाकृत आसान तरीका पढ़ने के लिए नीचे देखें। ये वन-लाइनर्स ऊपर दिए गए शानदार उत्तर को @ccpizza द्वारा संयोजित करते हैं, कुछ आसान फ़ॉर्मेटिंग ट्रिक्स के साथ मैंने यहाँ पढ़ा कि हजारों विभाजकों के रूप में अल्पविराम के साथ संख्या कैसे प्रिंट करें?।
बाइट्स
print ('{:,.0f}'.format(os.path.getsize(filepath))+" B")
किलोबिट्स
print ('{:,.0f}'.format(os.path.getsize(filepath)/float(1<<7))+" kb")
किलोबाइट
print ('{:,.0f}'.format(os.path.getsize(filepath)/float(1<<10))+" KB")
मेगाबिट्स
print ('{:,.0f}'.format(os.path.getsize(filepath)/float(1<<17))+" mb")
मेगाबाइट
print ('{:,.0f}'.format(os.path.getsize(filepath)/float(1<<20))+" MB")
gigabits
print ('{:,.0f}'.format(os.path.getsize(filepath)/float(1<<27))+" gb")
गीगाबाइट
print ('{:,.0f}'.format(os.path.getsize(filepath)/float(1<<30))+" GB")
टेराबाइट
print ('{:,.0f}'.format(os.path.getsize(filepath)/float(1<<40))+" TB")
स्पष्ट रूप से वे मानते हैं कि आप मोटे तौर पर जानते हैं कि आप किस आकार की शुरुआत से निपटने जा रहे हैं, जो मेरे मामले में (दक्षिण पश्चिम लंदन टीवी पर वीडियो संपादक) एमबी और कभी-कभी वीडियो क्लिप के लिए जीबी है।
अद्यतन करने का तरीका Hildy
की टिप्पणी के जवाब में, यहाँ केवल पायथन मानक पुस्तकालय का उपयोग करके कार्यों की एक कॉम्पैक्ट जोड़ी (चीजों को विलय करने के बजाय 'परमाणु रखते हुए) के लिए मेरा सुझाव है:
from pathlib import Path
def get_size(path = Path('.')):
""" Gets file size, or total directory size """
if path.is_file():
size = path.stat().st_size
elif path.is_dir():
size = sum(file.stat().st_size for file in path.glob('*.*'))
return size
def format_size(path, unit="MB"):
""" Converts integers to common size units used in computing """
bit_shift = {"B": 0,
"kb": 7,
"KB": 10,
"mb": 17,
"MB": 20,
"gb": 27,
"GB": 30,
"TB": 40,}
return "{:,.0f}".format(get_size(path) / float(1 << bit_shift[unit])) + " " + unit
>>> format_size("d:\\media\\bags of fun.avi")
'38 MB'
>>> format_size("d:\\media\\bags of fun.avi","KB")
'38,763 KB'
>>> format_size("d:\\media\\bags of fun.avi","kb")
'310,104 kb'