python - tutorial - पायथन में फ़ाइल आकार कैसे जांचें?




python tutorial (5)

अगर मैं bytes से किसी भी अन्य इकाई में कनवर्ट करना चाहता हूं तो एक bitshift चाल है जिसका उपयोग मैं करता हूं। यदि आप 10 सही बदलाव करते हैं तो आप मूल रूप से इसे एक ऑर्डर (एकाधिक) द्वारा स्थानांतरित करते हैं।

उदाहरण: 5GB are 5368709120 bytes

print (5368709120 >> 10)  # 5242880 kilo Bytes (kB)
print (5368709120 >> 20 ) # 5120 Mega Bytes(MB)
print (5368709120 >> 30 ) # 5 Giga Bytes(GB)

मैं विंडोज़ में एक पायथन लिपि लिख रहा हूं। मैं फ़ाइल आकार के आधार पर कुछ करना चाहता हूं। उदाहरण के लिए, यदि आकार 0 से बड़ा है, तो मैं किसी को ईमेल भेजूंगा, अन्यथा अन्य चीजों को जारी रखूंगा।

मैं फ़ाइल आकार की जांच कैसे करूं?


अन्य उत्तर वास्तविक फ़ाइलों के लिए काम करते हैं, लेकिन अगर आपको "फ़ाइल जैसी वस्तुओं" के लिए काम करने वाली किसी चीज़ की आवश्यकता है, तो इसे आजमाएं:

# f is a file-like object. 
f.seek(0, os.SEEK_END)
size = f.tell()

यह मेरे सीमित परीक्षण में वास्तविक फ़ाइलों और स्ट्रिंगियो के लिए काम करता है। (पायथन 2.7.3।) "फाइल-जैसी ऑब्जेक्ट" एपीआई वास्तव में एक कठोर इंटरफ़ेस नहीं है, लेकिन एपीआई दस्तावेज बताता है कि फ़ाइल जैसी वस्तुओं को seek() और tell() देना चाहिए।

संपादित करें

इस और os.stat() बीच एक और अंतर यह है कि यदि आप इसे पढ़ने की अनुमति नहीं रखते हैं तो भी आप एक फ़ाइल stat() कर सकते हैं। स्पष्ट रूप से खोज / बताना दृष्टिकोण तब तक काम नहीं करेगा जब तक आपके पास पढ़ने की अनुमति न हो।

2 संपादित करें

जोनाथन के सुझाव पर, यहां एक पागल संस्करण है। (उपरोक्त संस्करण फ़ाइल के अंत में फ़ाइल सूचक को छोड़ देता है, इसलिए यदि आप फ़ाइल से पढ़ने की कोशिश कर रहे थे, तो आपको शून्य बाइट वापस मिलेंगे!)

# f is a file-like object. 
old_file_position = f.tell()
f.seek(0, os.SEEK_END)
size = f.tell()
f.seek(old_file_position, os.SEEK_SET)

os.stat उपयोग करें, और परिणामस्वरूप ऑब्जेक्ट के st_size सदस्य का उपयोग करें:

>>> import os
>>> statinfo = os.stat('somefile.txt')
>>> statinfo
(33188, 422511L, 769L, 1, 1032, 100, 926L, 1105022698,1105022732, 1105022732)
>>> statinfo.st_size
926L

आउटपुट बाइट्स में है।


os.path.getsize का उपयोग करना:

>>> import os
>>> b = os.path.getsize("/path/isa_005.mp3")
>>> b
2071611L

आउटपुट बाइट्स में है।


import os


def convert_bytes(num):
    """
    this function will convert bytes to MB.... GB... etc
    """
    for x in ['bytes', 'KB', 'MB', 'GB', 'TB']:
        if num < 1024.0:
            return "%3.1f %s" % (num, x)
        num /= 1024.0


def file_size(file_path):
    """
    this function will return the file size
    """
    if os.path.isfile(file_path):
        file_info = os.stat(file_path)
        return convert_bytes(file_info.st_size)


# Lets check the file size of MS Paint exe 
# or you can use any file path
file_path = r"C:\Windows\System32\mspaint.exe"
print file_size(file_path)

परिणाम:

6.1 MB




python